diff --git a/CHANGELOG.md b/CHANGELOG.md index a192f97b..c1854f3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,37 @@ # Changelog +## 4.5 +* Fixed garbled colors during the fade to the main menu on startup when **SkipOpeningMovies** is enabled +* Fixed the AP cost display not updating on game load when using `HOOK_CALCAPCOST` hook script +* Fixed `load_array` script function not accepting floats as array keys +* Fixed a crash when calling `proto_data` with an invalid data member value +* Fixed `set_critter_current_ap` and `set_combat_free_move` script functions to update the player's AP lights only in combat +* Fixed `set/remove_script` script functions not setting the script index number on an object properly +* Fixed `set_unique_id` script function to prevent it from reassigning an object ID when unnecessary +* Fixed `ONDEATH` hook to prevent it from being triggered by non-critter objects +* Fixed `REMOVEINVENOBJ` hook not being triggered when using an item from active item slots while in the inventory screen +* Changed `add_extra_msg_file` script function to mark the two-argument form as deprecated +* Changed `objects_in_radius` script function to accept a radius of 0 +* Changed the character portrait on the character screen (from the **hero appearance mod**) to always show the standing pose +* Re-added **NumberPatchLoop** option from older versions to `ddraw.ini` +* Removed **AllowLargeTiles** option because its functionality is impractical and has never been used +* Removed **GlobalScriptPaths** option because storing global scripts across multiple paths is almost never needed +* Removed **ExtraSaveSlots** option from `ddraw.ini`. Now additional pages of save slots are always available, up to a maximum of **1000** slots +* Added a fix for the `+/-` keys not updating the brightness slider when used on the preferences screen +* Added a fix for getting stuck on an empty map when the encounter table has no available entries +* Added a fix for a visual glitch on the character screen when selecting perks that modify SPECIAL stats +* Added a fix for the morning start time used to determine random encounter frequency +* Added a tweak to center inventory windows horizontally when not using the hi-res patch +* Added a tweak to the animation sequence when interacting with scenery or using an item on an object +* Added a tweak to use path length instead of tile distance to determine whether to walk or run to interact with objects +* Added a new value to **InstantWeaponEquip** to skip weapon equip/unequip animations only when interacting with objects +* Added object type validation to `item_weight` script function to prevent potential issues +* Added a file size check for scripts to filter out clearly defective ones +* Added support for nested array expressions (`compile.exe` in the **modders pack** is also updated) +* Increased the maximum party member level from 6 to 10 + ## 4.4.9.1 -* Fixed a crash bug introduced in 4.4.6 when the player is hit and combat starts at the same time +* Fixed a crash bug introduced in 4.4.6 when a critter is hit and combat starts at the same time ## 4.4.9 * Fixed the edge-scrolling speed when using the game speed tweak @@ -1070,7 +1100,7 @@ Original engine bug fixes and various features based on the work by Crafty: Original engine bug fixes and various features based on the work by Crafty: * Fixed a crash bug introduced with the inventory drag and drop fix * Added a new value to **SpeedInterfaceCounterAnims** to update the HP/AC counters instantly when the number is not negative -* Added an option to skip weapon equip/unequip animations when performing various actions +* Added an option to skip weapon equip/unequip animations during various actions * Added an option to control the speed of pipboy alarm clock animations * Added an option to change the carry weight limit diff --git a/artifacts/ddraw.ini b/artifacts/ddraw.ini index 9a00f28b..31516ebb 100644 --- a/artifacts/ddraw.ini +++ b/artifacts/ddraw.ini @@ -1,5 +1,5 @@ ;sfall configuration settings -;v4.4.9.1 +;v4.5 [Main] ;Set to 1 to enable the built-in High Resolution Patch mode that is similar to the hi-res patch by Mash @@ -516,7 +516,7 @@ UseScrollingQuestsList=1 ;ConsoleOutputPath=console.txt ;Set to 1 to add additional pages of save slots -;This option is always enabled in 4.4.10/3.8.50 or later and cannot be disabled (kept for reference only) +;This option is always enabled in 4.5/3.8.50 or later and cannot be disabled (kept for reference only) ExtraSaveSlots=1 ;To use more than one save slot for quick saving (F6 key) without picking a slot beforehand, set the next two options diff --git a/sfall/Modules/BugFixes.cpp b/sfall/Modules/BugFixes.cpp index d7d11a1e..f33871bb 100644 --- a/sfall/Modules/BugFixes.cpp +++ b/sfall/Modules/BugFixes.cpp @@ -2007,21 +2007,21 @@ static __declspec(naked) void wmSetupRandomEncounter_hook() { } static __declspec(naked) void inven_obj_examine_func_hack() { - __asm { - mov edx, ds:[0x519064]; // inven_display_msg_line - cmp edx, 2; // >2 - ja fix; + __asm { // eax - text height + mov edx, ds:[0x519064]; // inven_display_msg_line + cmp edx, 2; // >2 + jg fix; retn; fix: - cmp edx, 5; // 4 lines - ja limit; - dec edx; - sub eax, 3; - mul edx; - add eax, 3; + cmp edx, 5; // 4 lines + jg limit; + dec edx; + sub eax, 3; + imul edx; + add eax, 3; retn; limit: - mov eax, 30; + mov eax, 30; retn; } } @@ -4095,6 +4095,8 @@ void BugFixes::init() { SafeWrite8(0x4583D8, 0x3B); // jz 0x458414 SafeWrite8(0x4583DE, CodeType::JumpZ); // jz 0x458414 MakeCall(0x4583E0, op_obj_can_hear_obj_hack, 1); + } else { + SafeWrite32(0x4583D3, 0x90903FEB); // jmp 0x458414 (prevent crash from null object) } if (IniReader::GetConfigInt("Misc", "AIBestWeaponFix", 1)) { diff --git a/sfall/version.h b/sfall/version.h index ffd41b5a..8d5eecc3 100644 --- a/sfall/version.h +++ b/sfall/version.h @@ -23,8 +23,8 @@ #define LEGAL_COPYRIGHT "Copyright (C) 2006-2026, sfall Team" #define VERSION_MAJOR 4 -#define VERSION_MINOR 4 -#define VERSION_BUILD 9 -#define VERSION_REV 2 +#define VERSION_MINOR 5 +#define VERSION_BUILD 0 +#define VERSION_REV 0 -#define VERSION_STRING "4.4.9.2" +#define VERSION_STRING "4.5"