diff --git a/artifacts/ddraw.ini b/artifacts/ddraw.ini index d8e87309f..df61bec3e 100644 --- a/artifacts/ddraw.ini +++ b/artifacts/ddraw.ini @@ -1,5 +1,5 @@ ;sfall configuration settings -;v4.4 +;v4.4.0.2 [Main] ;Set to 1 to enable the built-in High Resolution Patch mode that is similar to the hi-res patch by Mash @@ -402,6 +402,7 @@ SaveInCombatFix=1 ;Set to 1 to enable additional weapon animation codes from 'o' to 't' ;The 4 byte value at 0x39 of weapon protos may range from 0 to 15 rather than 0 to 10 ;Since the letters 'n' and 'r' are in use for other animations, an animation code of 11 corresponds to 's' and 15 to 't' +;This option is always enabled in 4.4.0.2/3.8.40.2 or later. The information is left for reference only AdditionalWeaponAnims=1 ;Uncomment these lines to modify the default modifiers for aimed shots at specific bodyparts diff --git a/artifacts/mods/gl_partycontrol.int b/artifacts/mods/gl_partycontrol.int index 5843a2281..83280fac8 100644 Binary files a/artifacts/mods/gl_partycontrol.int and b/artifacts/mods/gl_partycontrol.int differ diff --git a/artifacts/mods/gl_partycontrol.ssl b/artifacts/mods/gl_partycontrol.ssl index 9e251afe6..09dcd5357 100644 --- a/artifacts/mods/gl_partycontrol.ssl +++ b/artifacts/mods/gl_partycontrol.ssl @@ -12,7 +12,7 @@ NOTE: this script requires compiler from sfall modderspack with -s option (short circuit evaluation) - version 1.3 + version 1.4 */ @@ -44,8 +44,12 @@ variable dudeLightInt, dudeLightDist; +// returns non-zero for a controlled NPC procedure AllowControl(variable pid) begin - return ((pidList == 0 or scan_array(pidList, pid bwand 0xFFFFFF) != -1) and (party_member_obj(pid))); + if (pidList) then begin + return scan_array(pidList, pid bwand 0xFFFFFF) != -1; + end + return party_member_obj(pid); end procedure SetLight(variable critter, variable lInt, variable lDist) begin @@ -99,6 +103,10 @@ procedure CombatTurn_Handler begin level := has_trait(TRAIT_PERK, real_dude_obj, perkID); if (level) then critter_add_trait(critter, TRAIT_PERK, perkID, level); end + // special handling if dude has Jinxed trait/perk + if (has_trait(TRAIT_TRAIT, real_dude_obj, TRAIT_jinxed) or has_trait(TRAIT_PERK, real_dude_obj, PERK_jinxed_perk)) then begin + critter_add_trait(critter, TRAIT_PERK, PERK_jinxed_perk, 1); + end intface_redraw; obj_set_light_level(critter, 100, 4); @@ -138,6 +146,8 @@ procedure CombatTurn_Handler begin level := has_trait(TRAIT_PERK, real_dude_obj, perkID); if (level) then critter_rm_trait(critter, TRAIT_PERK, perkID, level); end + // special handling for Jinxed + critter_rm_trait(critter, TRAIT_PERK, PERK_jinxed_perk, -1); end if (status < 0) then begin @@ -152,6 +162,7 @@ procedure GameModeChange_Handler begin inControl := false; npcControl := 0; move_to(dude_obj, dude_tile, dude_elevation); + DEBUGMSG("Move to dude after NPC control.") end end diff --git a/artifacts/scripting/hooks.yml b/artifacts/scripting/hooks.yml index 90dcf059d..8c5046a55 100644 --- a/artifacts/scripting/hooks.yml +++ b/artifacts/scripting/hooks.yml @@ -488,7 +488,7 @@ -1 - combat ends abruptly (by script or by pressing Enter during PC turn) -2 - combat ends normally (hook always runs at the end of combat) Critter arg1 - critter doing the turn - bool arg2 - 1 at the start/end of the player's turn after loading a game saved in combat mode, 0 otherwise + int arg2 - 1 at the start/end of the player's turn after loading a game saved in combat mode, 0 otherwise int ret0 - pass 1 at the start of turn to skip the turn, pass -1 at the end of turn to force end of combat ``` diff --git a/artifacts/scripting/hookscripts.md b/artifacts/scripting/hookscripts.md index a059dd52b..870967337 100644 --- a/artifacts/scripting/hookscripts.md +++ b/artifacts/scripting/hookscripts.md @@ -597,7 +597,7 @@ int arg0 - event type: -1 - combat ends abruptly (by script or by pressing Enter during PC turn) -2 - combat ends normally (hook always runs at the end of combat) Critter arg1 - critter doing the turn -bool arg2 - 1 at the start/end of the player's turn after loading a game saved in combat mode, 0 otherwise +int arg2 - 1 at the start/end of the player's turn after loading a game saved in combat mode, 0 otherwise int ret0 - pass 1 at the start of turn to skip the turn, pass -1 at the end of turn to force end of combat ``` diff --git a/artifacts/sfall.dat b/artifacts/sfall.dat index 241cfa536..28537126d 100644 Binary files a/artifacts/sfall.dat and b/artifacts/sfall.dat differ diff --git a/artifacts/sfall_ru.dat b/artifacts/sfall_ru.dat index 48a2cba1d..b6a41beaa 100644 Binary files a/artifacts/sfall_ru.dat and b/artifacts/sfall_ru.dat differ diff --git a/artifacts/sfall_zh.dat b/artifacts/sfall_zh.dat index 2c7397705..cbed484f7 100644 Binary files a/artifacts/sfall_zh.dat and b/artifacts/sfall_zh.dat differ diff --git a/sfall/InputFuncs.cpp b/sfall/InputFuncs.cpp index b3fc875b0..8df1180c7 100644 --- a/sfall/InputFuncs.cpp +++ b/sfall/InputFuncs.cpp @@ -120,7 +120,7 @@ DWORD __stdcall KeyDown(DWORD key) { if ((key & 0x80000000) > 0) { // special flag to check by VK code directly return GetAsyncKeyState(key & 0xFFFF) & 0x8000; } - key = key & 0xFFFF; + key &= 0xFFFF; // combined use of DINPUT states + confirmation from GetAsyncKeyState() if (key < MAX_KEYS) { if (keysDown[key]) { // confirm pressed state diff --git a/sfall/Modules/MiscPatches.cpp b/sfall/Modules/MiscPatches.cpp index 1035b57ba..ff8eb9896 100644 --- a/sfall/Modules/MiscPatches.cpp +++ b/sfall/Modules/MiscPatches.cpp @@ -477,14 +477,14 @@ static void __declspec(naked) text_object_create_hack() { } static void AdditionalWeaponAnimsPatch() { - if (IniReader::GetConfigInt("Misc", "AdditionalWeaponAnims", 0)) { + //if (IniReader::GetConfigInt("Misc", "AdditionalWeaponAnims", 1)) { dlogr("Applying additional weapon animations patch.", DL_INIT); SafeWrite8(0x419320, 18); // art_get_code_ HookCalls(WeaponAnimHook, { 0x451648, 0x451671, // gsnd_build_character_sfx_name_ 0x4194CC // art_get_name_ }); - } + //} } static void SkilldexImagesPatch() { diff --git a/sfall/version.h b/sfall/version.h index 0e4978355..f840cbf78 100644 --- a/sfall/version.h +++ b/sfall/version.h @@ -25,6 +25,6 @@ #define VERSION_MAJOR 4 #define VERSION_MINOR 4 #define VERSION_BUILD 0 -#define VERSION_REV 1 +#define VERSION_REV 2 -#define VERSION_STRING "4.4.0.1" +#define VERSION_STRING "4.4.0.2"