Skip to content

Commit bc273b6

Browse files
committed
More robust lock handling: ensure that objects do not get 'locked open' accidentally. Ref BGforgeNet/Fallout2_Restoration_Project#381 (comment)
1 parent 037bffd commit bc273b6

19 files changed

Lines changed: 155 additions & 79 deletions

File tree

scripts_src/arroyo/aitemdor.ssl

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,17 @@ procedure map_enter_p_proc begin
8686
set_local_var(LVAR_Locked,STATE_ACTIVE);
8787
end
8888

89-
if ( (local_var(LVAR_Locked) == STATE_ACTIVE) and (global_var(GVAR_START_ARROYO_TRIAL) <= TRIAL_NONE) ) then begin //edit by killap - added (global_var(GVAR_START_ARROYO_TRIAL) <= TRIAL_NONE)
90-
obj_lock(self_obj);
91-
end else begin
92-
obj_unlock(self_obj);
93-
set_local_var(LVAR_Locked,STATE_INACTIVE); //added by killap
94-
end
89+
if ( (local_var(LVAR_Locked) == STATE_ACTIVE) and (global_var(GVAR_START_ARROYO_TRIAL) <= TRIAL_NONE) ) then begin //edit by killap - added (global_var(GVAR_START_ARROYO_TRIAL) <= TRIAL_NONE)
90+
// Ensure that we don't have objects "locked open"
91+
if obj_is_open(self_obj) then begin
92+
obj_close(self_obj);
93+
end
94+
// Ensure locked status
95+
obj_lock(self_obj);
96+
end else begin
97+
obj_unlock(self_obj);
98+
set_local_var(LVAR_Locked,STATE_INACTIVE); //added by killap
99+
end
95100
end
96101

97102
/**************************************************************************************

scripts_src/brokhill/hscrldr.ssl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,11 @@ procedure map_enter_p_proc begin
295295
//end added
296296

297297
if (local_var(LVAR_Locked) == STATE_ACTIVE) then begin
298-
obj_close(self_obj);
298+
// Ensure that we don't have objects "locked open"
299+
if obj_is_open(self_obj) then begin
300+
obj_close(self_obj);
301+
end
302+
// Ensure locked status
299303
obj_lock(self_obj);
300304
end else begin
301305
obj_unlock(self_obj);

scripts_src/den/diflkbox.ssl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,16 @@ procedure map_enter_p_proc begin
8181
end
8282

8383
if (local_var(LVAR_Locked) == STATE_ACTIVE) then begin
84-
obj_lock(self_obj);
84+
// Ensure that we don't have objects "locked open"
85+
if obj_is_open(self_obj) then begin
86+
obj_close(self_obj);
87+
end
88+
// Ensure locked status
89+
obj_lock(self_obj);
90+
end else begin
91+
obj_unlock(self_obj);
8592
end
8693

87-
else begin
88-
obj_unlock(self_obj);
89-
end
9094
end
9195

9296
/**************************************************************************************

scripts_src/headers/doors_containers.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,9 +1229,13 @@ the player locks it once more.
12291229
set_local_var(LVAR_Trapped,TRAPPED_STATUS);
12301230
end
12311231
if (local_var(LVAR_Locked) == STATE_ACTIVE) then begin
1232+
// Ensure that we don't have objects "locked open"
1233+
if obj_is_open(self_obj) then begin
1234+
obj_close(self_obj);
1235+
end
1236+
// Ensure locked status
12321237
obj_lock(self_obj);
1233-
end
1234-
else begin
1238+
end else begin
12351239
obj_unlock(self_obj);
12361240
end
12371241
end

scripts_src/klamath/kibbox.ssl

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,18 @@ procedure map_enter_p_proc begin
8383
set_local_var(LVAR_Restock_Time, (2 * ONE_GAME_DAY) + game_time);
8484
end
8585

86+
8687
if (local_var(LVAR_Locked) == STATE_ACTIVE) then begin
87-
obj_lock(self_obj);
88+
// Ensure that we don't have objects "locked open"
89+
if obj_is_open(self_obj) then begin
90+
obj_close(self_obj);
91+
end
92+
// Ensure locked status
93+
obj_lock(self_obj);
94+
end else begin
95+
obj_unlock(self_obj);
8896
end
8997

90-
else begin
91-
obj_unlock(self_obj);
92-
end
9398
end
9499

95100
/**************************************************************************************

scripts_src/klamath/kidbox.ssl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,16 @@ procedure map_enter_p_proc begin
7575
end
7676

7777
if (local_var(LVAR_Locked) == STATE_ACTIVE) then begin
78-
obj_lock(self_obj);
78+
// Ensure that we don't have objects "locked open"
79+
if obj_is_open(self_obj) then begin
80+
obj_close(self_obj);
81+
end
82+
// Ensure locked status
83+
obj_lock(self_obj);
84+
end else begin
85+
obj_unlock(self_obj);
7986
end
8087

81-
else begin
82-
obj_unlock(self_obj);
83-
end
8488
end
8589

8690
/**************************************************************************************

scripts_src/klamath/kisbox.ssl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,16 @@ procedure map_enter_p_proc begin
8282
end
8383

8484
if (local_var(LVAR_Locked) == STATE_ACTIVE) then begin
85-
obj_lock(self_obj);
85+
// Ensure that we don't have objects "locked open"
86+
if obj_is_open(self_obj) then begin
87+
obj_close(self_obj);
88+
end
89+
// Ensure locked status
90+
obj_lock(self_obj);
91+
end else begin
92+
obj_unlock(self_obj);
8693
end
8794

88-
else begin
89-
obj_unlock(self_obj);
90-
end
9195
end
9296

9397
/**************************************************************************************

scripts_src/modoc/midavdor.ssl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,13 +281,18 @@ procedure map_enter_p_proc begin
281281
end
282282
if ((cage_door == false) and (coup_door == false)) then begin
283283
end
284+
284285
if (local_var(LVAR_Locked) == STATE_ACTIVE) then begin
285-
obj_close(self_obj);
286-
set_local_var(LVAR_Locked, STATE_ACTIVE);
286+
// Ensure that we don't have objects "locked open"
287+
if obj_is_open(self_obj) then begin
288+
obj_close(self_obj);
289+
end
290+
// Ensure locked status
287291
obj_lock(self_obj);
288292
end else begin
289293
obj_unlock(self_obj);
290294
end
295+
291296
// match_dude_elevation;
292297
end
293298
end

scripts_src/modoc/midoor.ssl

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -278,14 +278,19 @@ procedure map_enter_p_proc begin
278278
end
279279
if ((cage_door == false) and (coup_door == false)) then begin
280280
end
281+
281282
if (local_var(LVAR_Locked) == STATE_ACTIVE) then begin
282-
obj_close(self_obj);
283-
set_local_var(LVAR_Locked, STATE_ACTIVE);
283+
// Ensure that we don't have objects "locked open"
284+
if obj_is_open(self_obj) then begin
285+
obj_close(self_obj);
286+
end
287+
// Ensure locked status
284288
obj_lock(self_obj);
285289
end else begin
286290
obj_unlock(self_obj);
287291
end
288-
// match_dude_elevation;
292+
293+
// match_dude_elevation;
289294
end
290295
end
291296

scripts_src/modoc/mimirdor.ssl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,13 +281,18 @@ procedure map_enter_p_proc begin
281281
end
282282
if ((cage_door == false) and (coup_door == false)) then begin
283283
end
284+
284285
if (local_var(LVAR_Locked) == STATE_ACTIVE) then begin
285-
obj_close(self_obj);
286-
set_local_var(LVAR_Locked, STATE_ACTIVE);
286+
// Ensure that we don't have objects "locked open"
287+
if obj_is_open(self_obj) then begin
288+
obj_close(self_obj);
289+
end
290+
// Ensure locked status
287291
obj_lock(self_obj);
288292
end else begin
289293
obj_unlock(self_obj);
290294
end
295+
291296
end
292297
end
293298

0 commit comments

Comments
 (0)