From e2edc1991ad6ff70d0388411fbee507980ebe1d6 Mon Sep 17 00:00:00 2001 From: NovaRain Date: Wed, 30 Aug 2023 09:51:35 +0800 Subject: [PATCH] Sync some components with UPU * Add ammo damage formula options to the installer. * Update gl_k_walking_speed. --- extra/env.sh | 2 +- extra/inno/components_ammo.iss | 5 +++ extra/inno/ini_ammo.iss | 4 +++ extra/inno/inno.iss | 3 ++ release/mods/upu.ini | 1 + scripts_src/global/gl_k_walking_speed.ssl | 42 ++++++++++++++--------- 6 files changed, 39 insertions(+), 18 deletions(-) create mode 100644 extra/inno/components_ammo.iss create mode 100644 extra/inno/ini_ammo.iss diff --git a/extra/env.sh b/extra/env.sh index a5fe9ae4f7..cc57241e52 100755 --- a/extra/env.sh +++ b/extra/env.sh @@ -8,7 +8,7 @@ export release_dir="$(realpath release)" export mods_dir="$release_dir/mods" export mpack_version=${mpack_version:-4.4} export mpack_7z="mpack.7z" -export sfall_version=${sfall_version:-4.4} +export sfall_version=${sfall_version:-4.4.0.1} export WINEARCH=win32 export WINEDEBUG=-all export mod_name=rpu diff --git a/extra/inno/components_ammo.iss b/extra/inno/components_ammo.iss new file mode 100644 index 0000000000..72c982cc27 --- /dev/null +++ b/extra/inno/components_ammo.iss @@ -0,0 +1,5 @@ +Name: "ammo"; Description: "Ammo damage formula"; Types: "custom"; +Name: "ammo\default"; Description: "Default"; Flags: exclusive disablenouninstallwarning; +Name: "ammo\glovz"; Description: "Glovz's"; Flags: exclusive disablenouninstallwarning; +Name: "ammo\glovz_mult"; Description: "Glovz's with damage multiplier tweak"; Flags: exclusive disablenouninstallwarning; +Name: "ammo\yaam"; Description: "YAAM"; Flags: exclusive disablenouninstallwarning; diff --git a/extra/inno/ini_ammo.iss b/extra/inno/ini_ammo.iss new file mode 100644 index 0000000000..a3f3eb5949 --- /dev/null +++ b/extra/inno/ini_ammo.iss @@ -0,0 +1,4 @@ +FileName: "{app}\ddraw.ini"; Section: "Misc"; Key: "DamageFormula"; String: "0"; Components: ammo\default; +FileName: "{app}\ddraw.ini"; Section: "Misc"; Key: "DamageFormula"; String: "1"; Components: ammo\glovz; +FileName: "{app}\ddraw.ini"; Section: "Misc"; Key: "DamageFormula"; String: "2"; Components: ammo\glovz_mult; +FileName: "{app}\ddraw.ini"; Section: "Misc"; Key: "DamageFormula"; String: "5"; Components: ammo\yaam; diff --git a/extra/inno/inno.iss b/extra/inno/inno.iss index 2c634c9e7b..b37fd9dafc 100644 --- a/extra/inno/inno.iss +++ b/extra/inno/inno.iss @@ -38,6 +38,7 @@ Source: "optional\goris_fast_derobing_low_fps.dat"; DestDir: "{#mods_dir}"; Comp #include "ini_debug.iss" #include "ini_sound.iss" FileName: "{app}\mods\upu.ini"; Section: "Main"; Key: "goris_derobing_speed"; String: "0"; Components: goris\skip; +#include "ini_ammo.iss" [Dirs] Name: "{app}\{#backup_dir}" @@ -58,6 +59,8 @@ Name: "goris\high_fps"; Description: "High FPS"; Flags: exclusive disablenounins Name: "goris\low_fps"; Description: "Low FPS"; Flags: exclusive disablenouninstallwarning; Name: "goris\skip"; Description: "Skip"; Flags: exclusive disablenouninstallwarning; +#include "components_ammo.iss" + Name: "translation"; Description: "Language"; Types: "custom"; Flags: fixed; #include "components_translations.iss" diff --git a/release/mods/upu.ini b/release/mods/upu.ini index 3bcf3c15dc..68d419257d 100644 --- a/release/mods/upu.ini +++ b/release/mods/upu.ini @@ -5,6 +5,7 @@ goris_derobing_speed=50 ; Some critters (robots, various guards, etc) walk much slower than others. This speeds them up a bit. Just cosmetic. +; This setting has no effect if alternative low FPS walk speed fix is installed. critters_walk_faster=1 ; Wipe merchant inventories before restock. diff --git a/scripts_src/global/gl_k_walking_speed.ssl b/scripts_src/global/gl_k_walking_speed.ssl index 2701db48f6..4f68bc2960 100644 --- a/scripts_src/global/gl_k_walking_speed.ssl +++ b/scripts_src/global/gl_k_walking_speed.ssl @@ -3,7 +3,7 @@ #define set_walking_speed "critters_walk_faster" #define fps_offset 0x4 -#define frames_per_dir_count_offset 0x8 +#define frame_count_offset 0x8 procedure start; variable enabled; @@ -72,24 +72,32 @@ end procedure start begin if game_loaded then begin - enabled := upu_msetting(set_walking_speed); - if enabled then begin - variable fs_override := check_filesystem_override; - if fs_override then begin - variable frm, frms, file, path, cur_frames_per_dir; - frms = get_slow_frms; - ndebug("initializing"); - foreach frm in frms begin - path := "art\\critters\\" + frm + "b.frm"; - file := fs_copy(path, path); - fs_seek(file, frames_per_dir_count_offset); - cur_frames_per_dir = fs_read_short(file); + enabled = upu_msetting(set_walking_speed); + if enabled != 0 then begin + variable fs_override = check_filesystem_override; + if not fs_override then begin + ndebug("fs override disabled, aborting"); + return false; + end + + variable frm, frms, file, path, cur_frame_count; + frms = get_slow_frms; + ndebug("initializing"); + foreach frm in frms begin + path = "art\\critters\\" + frm + "b.frm"; + file = fs_copy(path, path); + fs_seek(file, frame_count_offset); + cur_frame_count = fs_read_short(file); + if cur_frame_count > 8 then begin fs_seek(file, fps_offset); - fs_write_short(file, cur_frames_per_dir); // 1 step per second - ndebug("set fps to " + cur_frames_per_dir + " in " + path); + fs_write_short(file, cur_frame_count); // 1 step per second + ndebug("set fps to " + cur_frame_count + " in " + path); + end else begin + ndebug("low frame count detected in " + path + ", not boosting fps"); end - ndebug("initialized"); - end ndebug("fs override disabled, aborting"); + end + ndebug("initialized"); + end end end