Added ObjCanHearObjFix to ddraw.ini.

Added extra comment for CarChargingFix to ddraw.ini.
Edited the description of DisplayName in sfall-mods.ini because of the new BoxBarCount option.
Minor edits to hookscripts.txt.
This commit is contained in:
NovaRain
2018-08-19 00:33:10 +08:00
parent 032e1d13f3
commit 3062533492
4 changed files with 19 additions and 13 deletions
+2 -1
View File
@@ -39,7 +39,8 @@ MotionScanner=0
Mode=0
;PIDList=62,89,97,107,160,161
;Displays the name of the controlled critter in a notification box above the interface bar. Must be between 5 and 9
;Choose a notification box to display the name of the controlled critter above the interface bar
;Must be between 5 and (4 + the value of BoxBarCount in ddraw.ini)
;Set to 0 to disable
DisplayName=0
+4
View File
@@ -490,6 +490,9 @@ QuickPocketsApCostReduction=2
;Set to 1 to allow objects seeing through other objects with their ShootThru flag set
ObjCanSeeObj_ShootThru_Fix=0
;Set to 1 to fix the broken obj_can_hear_obj script function
ObjCanHearObjFix=0
;Set to 1 to enable the balanced bullet distribution formula for burst attacks
ComputeSprayMod=0
@@ -563,6 +566,7 @@ DontTurnOffSneakIfYouRun=0
CanSellUsedGeiger=1
;Set to 1 to fix the issue with being able to charge the car by using cells on other scenary/critters
;Set to 0 if another mod you're using has custom vehicles
CarChargingFix=1
;Set to 1 to skip weapon equip/unequip animations when performing various actions
+4 -4
View File
@@ -401,7 +401,7 @@ This is fired after the default calculation is made.
Critter arg1 - Watcher object
Obj arg2 - Target object
int arg3 - Result of vanilla function: 1 - within perception range, 0 - otherwise
int arg4 - The type of the called hook: 1 - from the script function obj_can_see_obj, 2 - from the script function obj_can_hear_obj (need option CanHearObjFix enabled), 0 for all other cases
int arg4 - Type of hook: 1 - when being called from obj_can_see_obj script function, 2 when being called from obj_can_hear_obj script function (need to set ObjCanHearObjFix=1 in ddraw.ini), 0 for all other cases
int ret1 - overrides the returned result of the function: 0 - not in range (can't see), 1 - in range (will see if not blocked), 2 - forced detection (will see regardless, only used in obj_can_see_obj scripting function which is called by every critter in the game)
@@ -523,7 +523,7 @@ int ret1 - overrides the animation code (pass -1 if you want to skip the ani
-------------------------------------------
HOOK_EXPLOSIVETIMER (hs_explosivetimer)
HOOK_EXPLOSIVETIMER (hs_explosivetimer.int)
Runs after setting the explosive timer. You can override the result.
@@ -536,10 +536,10 @@ int ret2 - overrides the result of engine calculation: 0/1 - failure, 2/3 -
-------------------------------------------
HOOK_DESCRIPTIONOBJ (hs_descriptionobj)
HOOK_DESCRIPTIONOBJ (hs_descriptionobj.int)
Runs when using the examine action icon to display item description. You can override the description of the item.
An example usage would be to add additional parameters to the description.
An example usage would be to add an additional description to the item based on player's stats/skills.
Obj arg1 - the item
+9 -8
View File
@@ -1298,7 +1298,7 @@ static void __declspec(naked) op_obj_can_see_obj_hack() {
mov ecx, [eax + tile]; // source.tile
cmp ecx, -1;
jz end;
mov eax, [eax + elevation];
mov eax, [eax + elevation]; // source.elev
mov edi, [edx + elevation]; // target.elev
cmp eax, edi; // check source.elev == target.elev
retn;
@@ -1673,15 +1673,16 @@ void BugFixes::init()
dlogr(" Done", DL_INIT);
}
// Fix op_obj_can_see_obj_
// Fix for obj_can_see_obj not checking if source and target objects are on the same elevation before calling
// is_within_perception_
MakeCall(0x456B63, op_obj_can_see_obj_hack);
SafeWrite16(0x456B76, 0x23EB); // jz > jmp (skip unused engine code)
SafeWrite16(0x456B76, 0x23EB); // jmp loc_456B9B (skip unused engine code)
//Fix broken op_obj_can_hear_obj_ (enable a function)
if (GetConfigInt("Misc", "CanHearObjFix", 0) != 0) {
dlog("Applying obj_can_hear_obj opcode fix.", DL_INIT);
SafeWrite8(0x4583D8, 0x3B); // change jz offset
SafeWrite8(0x4583DE, 0x74); // jnz > jz
// Fix broken op_obj_can_hear_obj_ function
if (GetConfigInt("Misc", "ObjCanHearObjFix", 0) != 0) {
dlog("Applying obj_can_hear_obj fix.", DL_INIT);
SafeWrite8(0x4583D8, 0x3B); // jz loc_458414
SafeWrite8(0x4583DE, 0x74); // jz loc_458414
MakeCall(0x4583E0, op_obj_can_hear_obj_hack);
SafeWrite8(0x4583E5, 0x90);
dlogr(" Done", DL_INIT);