22 Copyright 1998-2003 Interplay Entertainment Corp. All rights reserved.
33*/
44
5+ #define SCRIPT_REALNAME "direbdor"
6+
57import variable becky_guard_obj;
68import variable becky_door_guard_obj;
79import variable becky_obj;
@@ -11,23 +13,6 @@ variable user_of_door;
1113
1214#define LOCKED_STATUS ((STATE_ACTIVE * (becky_dead == false)) + (STATE_INACTIVE * becky_dead))
1315
14- #define send_tamper_to_guard_who_sees \
15- check_guard := 0; \
16- if (becky_guard_obj != 0) then begin \
17- if (obj_can_see_obj(becky_guard_obj, user_of_door)) then begin \
18- check_guard := becky_guard_obj; \
19- end \
20- end else if (becky_obj != 0) then begin \
21- if (obj_can_see_obj(becky_obj, user_of_door)) then begin \
22- check_guard := becky_obj; \
23- end \
24- end \
25- if (becky_door_guard_obj != 0) then begin \
26- if ((obj_can_see_obj(becky_door_guard_obj, user_of_door)) or (check_guard != 0)) then begin \
27- check_guard := becky_door_guard_obj; \
28- end \
29- end
30-
3116procedure def_use_p_proc;
3217procedure def_use_skill_on_p_proc;
3318procedure def_map_update_p_proc;
6247
6348#include "../den/didoor.ssl"
6449
50+ /**
51+ * Set `check_guard` to one of the guards or Becky herself.
52+ * Almost never Becky, though.
53+ * @param {ObjectPtr} door_user Critter using the door
54+ * @ret {ObjectPtr} who Guard critter or 0.
55+ */
56+ procedure get_guard_object(variable door_user) begin
57+ if (becky_door_guard_obj != 0) then begin
58+ if (obj_can_see_obj(becky_door_guard_obj, door_user)) then begin
59+ ndebug("guard = door guard");
60+ return becky_door_guard_obj;
61+ end
62+ end
63+ if (becky_guard_obj != 0) then begin
64+ if (obj_can_see_obj(becky_guard_obj, door_user)) then begin
65+ ndebug("guard = normal guard");
66+ return becky_guard_obj;
67+ end
68+ end
69+ if (becky_obj != 0) then begin
70+ if (obj_can_see_obj(becky_obj, door_user)) then begin
71+ ndebug("guard = Becky");
72+ return becky_obj;
73+ end
74+ end
75+ return 0;
76+ end
77+
6578procedure test_use_tamper begin
6679 ndebug("test_use_tamper");
67- send_tamper_to_guard_who_sees
80+ check_guard = get_guard_object(user_of_door);
81+ ndebug("check_guard = " + check_guard);
6882 if (check_guard != 0) then begin
6983 if (user_of_door == dude_obj) then begin
7084 ndebug(" user_of_door == dude_obj");
8296
8397procedure test_door_open begin
8498 if ((obj_is_open(self_obj) == false) and (obj_is_locked(self_obj) == false)) then begin
85- send_tamper_to_guard_who_sees
99+ check_guard = get_guard_object(user_of_door);
86100 if (check_guard != 0) then begin
87101 if (user_of_door == dude_obj) then begin
88102 flush_add_timer_event(check_guard, 0, timed_event_attack);
@@ -97,7 +111,7 @@ procedure test_door_open begin
97111end
98112
99113procedure test_use_skill_tamper begin
100- send_tamper_to_guard_who_sees
114+ check_guard = get_guard_object(user_of_door);
101115 ndebug("test_use_skill_tamper");
102116 if (check_guard != 0) then begin
103117 if ((action_being_used == SKILL_LOCKPICK) or (action_being_used == SKILL_TRAPS)) then begin
0 commit comments