* 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 `<GameRoot>\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`
* 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
* 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
* Fixed the order of autoloaded **.dat** files on the FAT file system
* 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 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`
* HRP: Disabled **IFACE_BAR_WIDTH** and **SCALE_BUTTONS_AND_TEXT_MENU** for a modified `fallout2.exe` with Chinese/Japanese support to prevent garbled text
* 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
* Fixed a bug introduced in 4.3.1 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 **built-in HRP/DX9** windowed mode
## 4.3.3
* Implemented an **_integrated High Resolution Patch mode_**, which has almost the same functionality as the original hi-res patch and has better integration with sfall's graphics features/improvements
* Fixed a bug introduced in 4.3.1 that broke the fix for party members with drug addictions
* Fixed a bug introduced in 4.3.1 that caused AI to be unable to use some weapons
* Fixed a bug introduced in 4.3.1 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
* 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 an option to disable the special handling of city areas 45 and 46 in the engine when visiting Area 45
* Added a new value to **AIDrugUsePerfFix** to allow NPCs to use only the drugs listed in `chem_primary_desire` and healing drugs
* Added support for loading premade character **GCD/BIO** files from the `premade\<language>\` directory for non-English languages
* Added support for loading fonts from the `fonts\<language>\` directory for non-English languages
* Added a debug option to control messages relating to engine fixes in the debug log
* Added a debug message about a missing combat object
* Added a new argument to `HOOK_CALCAPCOST` hook script
* New script function: `set_quest_failure_value`
* New hook scripts: `hs_bestweapon`, `hs_canuseweapon`
* Updated **NPC armor appearance mod** to prevent NPCs from picking up and trying to equip disallowed weapons in combat
* sfall can now load a localized `sfall_xx.dat` resource file instead of the default `sfall.dat`
## 4.2.9
* Fixed the critical hits from unaimed shots not matching the ones from aimed torso shots for some critter types
* Fixed the display issue in **DX9** mode when returning to the game after using `Alt+Tab` in dialogue
* Fixed `obj_under_cursor` script function, which now returns 0 if the cursor is in movement mode
* Improved compatibility with some older **DX9** graphics cards
* Changed `intface_redraw` script function with one argument to be able to redraw the specified interface window
* Changed `HOOK_DESCRIPTIONOBJ` hook script to run for all types of objects, not just the items
* Changed the filename of the debug editor to `FalloutDebug.exe` (in the **modders pack**)
* Excluded **SFX** sounds from the search for alternative formats
* Removed the tweak that adds the city name in the description for empty save slots (added in 4.2.7)
* Added a fix to update the maximum HP stat of critters on the map when loaded for the first time
* Added a fix to the poison/radiation-related engine functions when taking control of an NPC
* 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 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`
* New hook scripts: `hs_adjustpoison`, `hs_adjustrads`, `hs_rollcheck`
## 4.2.8.1
* Fixed a few minor bugs introduced in 4.2.8
* Added support for drawing **PCX** images to `draw_image`, `draw_image_scaled`, and `interface_art_draw` script functions
* New script function: `win_fill_color`
* Cleaned up `define_lite.h` and `command_lite.h` in the **modders pack**
* 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
* 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 fix for a visual glitch on the black edges of the map when the map borders for the hi-res patch are set smaller than the screen size
* Added a fix to prevent the execution of `critter_p_proc` and game events when playing movies
* Added a fix to prevent crashes and loading maps when the death animation causes the player to cross an exit grid
* Added a fix to limit the maximum distance for the knockback animation to 20 hexes
* Added a tweak to allow setting custom colors from the game palette for object outlines
* Added a tweak to add the city name in the description for empty save slots
* Added an option to use Fallout's normal text font for death screen subtitles
* 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
## 4.2.6
* 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 4.2.3 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
* Fixed a bug introduced in 4.1.9 that could cause the combat to end automatically in some cases
* Fixed a bug introduced in 4.2 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 4.2.3 that caused **CorpseDeleteTime** not to set the timer correctly
* Fixed a bug introduced in 4.2.4 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
* Fixed and changed the behavior of **GvarID** option in the **drugs ini file**
* Improved the fix for items on the ground being obscured by a pool of blood after the corpse is removed
* Changed the priority of files in the **AutoSearchPath** folder to be higher than the **PatchFileXX** options
* 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
## 4.2.4
* 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 possible crash or player's turn being skipped when returning to the game after using `Alt+Tab` in combat
* Fixed a bug introduced in 4.1.9 that could cause a hang when loading a saved game
* Fixed `COMBATTURN` hook not being triggered when loading a saved game in combat
* 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
## 4.2.3
* 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
* Added a fix to prevent crashes when **DebugMode** is enabled and there is a **'%'** character in the printed message
* Added an option to load a global shader file at game startup and added an example global shader file to the **modders pack**
* Added support for executing the `timed_event_p_proc` procedure in global scripts
* Added `SPECIAL` flag to the game mode functions (when switching from dialog mode to barter mode, or a party member joins/leaves in the dialog screen)
* Added a new argument to `HOOK_GAMEMODECHANGE` hook script
* New game hook: `HOOK_STDPROCEDURE_END`, as an extension to `HOOK_STDPROCEDURE` hook script
* 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
* Fixed **NPC combat control mod** not removing the inherited perks from controlled critters properly
* 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 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
* 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**
* New script functions: `unwield_slot`, `add_trait`, `get_inven_ap_cost`
* Updated **NPC armor appearance mod** and added an alternative `npcarmor.ini` for vanilla Fallout 2 (in the **modders pack**)
## 4.2
* Fixed a bug in **XPTable** that prevented the player from reaching the highest specified level
* Fixed `create_message_window` script function to prevent it from creating multiple message windows
* Fixed some arguments in `BARTERPRICE` hook when trading with a party member
* Fixed a crash bug introduced in 4.1.8 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 4.1.8 that broke the **AllowLargeTiles** option
* Fixed the AP cost display issue in **NPC combat control mod**
* Improved the functionality of `add_extra_msg_file` script function to use **'English'** as the fallback language directory for loading msg files
* 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 override the path location of all ini files used by scripts
* 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_ADJUSTFID` hook script
* 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
* 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
* Added a new **'combat ends normally'** event to `HOOK_COMBATTURN` hook script
* Added a `sfall.dat` resource file, which contains the required files for various features
* New script functions: `metarule_exist`, `add_extra_msg_file`
## 4.1.8.1
* Fixed a bug introduced in 4.1.4 that could crash the game when calling knockback modifier functions
* Improved compatibility with older processors (**pre-SSE2**)
## 4.1.8
* 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
* Fixed the position of the items in active item slots after ending control of the critter
* 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
* 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 fix to prevent fake perks from being added to all controlled critters
* Added a missing option for testing **AllowSoundForFloats** to the **[Debugging]** section of `ddraw.ini`
* Added a new **'dropping item on the character portrait'** event to `HOOK_INVENTORYMOVE` hook script
* Added an ammo ini loader mod to the example mods in the **modders pack**
* Slightly increased the maximum text width of the information card on the character screen
* New script functions: `draw_image`, `draw_image_scaled`, `set_fake_perk/trait_npc`, `set_selectable_perk_npc`, `has_fake_perk/trait_npc`
## 4.1.7
* Implemented a **critter individualization** system. Each critter has its own independent base/bonus stats, separated from other critters sharing the same PID. Now `set_critter_base/extra_stat` script functions only set stats for a specific critter
* Fixed the argument numbering in error messages when validating arguments
* Fixed the weapon duplication bug in **NPC combat control mod**
* Fixed a bug in **CheckWeaponAmmoCost** that caused NPCs not to switch to other weapons when there is not enough ammo to shoot
* 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
* 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 an option to disable the special handling of map IDs 19 and 37 in the engine when entering the maps
* 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 a new **'picking up item'** event to `HOOK_INVENTORYMOVE` hook script
* 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
* The number of simultaneously displayed notification boxes now depends on the game resolution
* New script function: `set_unique_id`
* New hook script: `hs_sneak`
## 4.1.6
* Fixed a crash bug introduced in 4.1.5 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`
## 4.1.4.1
* Fixed a bug introduced in 4.1.4 that broke the calculation of the skill point cost for increasing skill levels (from Mr.Stalin)
## 4.1.4
* Fixed a bug in **NPC armor appearance mod** (in the **modders pack**) that caused other critters to be unable to attack with weapons
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
* New hook script: `hs_setlighting`
## 4.1.3
* 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**
* Changed **AutoQuickSave** to use the current selected page if **AutoQuickSavePage** is disabled
Various bug fixes and features based on the work by Mr.Stalin:
* Fixed a bug introduced in 4.1 that broke the return values of `HOOK_FINDTARGET` hook script
* Fixed the missing return value of -1 for `HOOK_USEOBJON` hook script
* Fixed the order of loading global scripts from multiple paths
* Fixed the return values of a hook getting corrupted if another hook was called during the execution of the current hook
* Added a fix to display a pop-up message box about **death from radiation**
* Added a fix to prevent hook scripts from being executed when the depth limit is exceeded, or the hook is called recursively
* Added a new value to **SpeedInterfaceCounterAnims** to update the AC counter instantly when switching to other controlled critters in combat
* New script functions: `obj_under_cursor`, `loot_obj`, `get/set_object_data`, `get_object_ai_data`
* New hook script: `hs_subcombatdmg`
## 4.1.2
* Updated **NPC combat control mod** to work with **BoxBarCount** and prevent Marcus and non-biped critters from equipping armor when controlled by the player
* Updated **item highlighting mod** to be disabled while in the loot screen
* Changed the debug editor to require sfall debugging mode
* 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 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 an option to skip loading game settings from saved games
* Added an option to fix the bug of using First Aid/Doctor skills when using them on the player
* Added 4 new modes to `metarule2_explosions` function
* New script functions: `item_make_explosive`, `dialog_obj`
* New hook scripts: `hs_useskillon`, `hs_onexplosion`
## 4.1.1
Original engine bug fixes based on the work by Crafty:
* Added a fix for the encounter description being displayed in two lines instead of one
* Added a fix for the maximum text width of the player name in the inventory
* Added a fix for the **'mood'** argument of `start_gdialog` script function being ignored for talking heads
Various bug fixes and features based on the work by Mr.Stalin:
* 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
* 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 an option to prevent the inventory/loot/automap interfaces from being placed on top of other script-created windows
* New script functions: `get_current_inven_size`, `create_win`, `get/set_can_rest_on_map`
## 4.1
* Added an option to display experience points with the bonus from **Swift Learner** perk when gained from non-scripted situations (from Crafty)
Original engine bug fixes and various features based on the work by Mr.Stalin:
* Implemented a **code injection system for game hooks**. In previous versions, the code of game hooks was always executed even if there is no corresponding hook script. Now the code of a game hook only gets injected into the game when the corresponding hook script exists
* 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
* Improved the functionality of **ExtraGameMsgFileList** to allow manually assigning numbers to specific msg files
* Improved the functionality of `HOOK_AMMOCOST` hook script when **CheckWeaponAmmoCost** is enabled
* Improved and expanded the functionality of **UseScrollingQuestsList** to display page numbers and add another set of scroll buttons
* New script function: `inventory_redraw` (from Mr.Stalin)
* **NPC combat control mod** now centers the screen on the controlled critter and has new options to display critter's name
## 4.0.6
* Fixed a crash bug introduced in 4.0.5 when calling various hooks
## 4.0.5
* 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)
* Added the ability to define allowed weapon animations for NPCs to **NPC armor appearance mod** (in the **modders pack**)
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
* Added a new mode to `metarule2_explosions` function
* New script function: `set_iface_tag_text`
* New hook script: `hs_gamemodechange`
* Expanded `get_mouse_buttons` function to return a value for the middle mouse button
* Improved the functionality of `hs_inventorymove` and `hs_invenwield`
## 4.0.4
* 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 a bug in **NPC combat control mod** that caused **Gecko Skinning** to appear in the perk selection window
* Fixed a bug in **item highlighting mod** that caused items to be kept highlighted when entering combat while holding the highlight key
* 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)
* Improved the fix for player's base EMP DR to make sure the value is set correctly
* **Item highlighting mod** now only highlights lootable corpses
## 4.0.2
* 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
* New script function: `display_stats`
* Improved the functionality of **UseScrollWheel**. Now you can scroll through items in the loot/barter screens, and text in the message window (from Crafty)
## 4.0.1
* Fixed a crash bug in **NPC combat control** when trying to control a temporary party member that has no data in `party.txt`
## 4.0
* 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
* 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
* New hook scripts: `hs_adjustfid`, `hs_combatturn`, `hs_cartravel`
* Added the ability to load global scripts from different paths
* Included Chinese and Russian translations
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 `INTFACEUSE`, `INTFACELOOT`, `BARTER`, and `HEROWIN` flags to the game mode functions
* 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
* Added a fix for negative SPECIAL values in character creation
* Added a fix for the game hanging in an endless loop in combat mode when calling `anim` script functions inside `damage_p_proc`
* Added 3 new arguments to `HOOK_BARTERPRICE` hook script
## 3.8.2
* Fixed broken `call_offset_*` script functions
* Fixed **OverrideMusicDir** not using the correct path string
* Fixed a bug in `metarule2_explosions` function that caused damage type change not to work
* 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)
* Removed a few options from `ddraw.ini` that should never be turned off
Original engine bug fixes and various features based on the work by Crafty:
* Fixed **SpeedInterfaceCounterAnims** not displaying the correct negative value when HP drops below zero
* Rewrote the **Sharpshooter** perk fix to match its description correctly
* Rewrote the dodgy door fix to apply to both melee and ranged attacks
* Added a fix for a crash when leaving the map while waiting for someone to die of a super stimpak overdose
* Added a fix for the original engine issue that caused party members to have incorrect stats when they level up while on drugs
* Added a fix for the unlimited ammo exploit
* Added a fix for negative values in Skilldex window
* Added a fix for the clickability issue in the pipboy and an exploit that allows resting in places where you shouldn't be able to
* 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