![]() |
This is the transcript of a script file, which runs certain tasks in the game upon execution. |
---|
Details | |
---|---|
Type | Decompiled script |
SCRIPTS.LST comment | The Red Pass Key doors in the Glow |
MSG file | GLORDDOR.MSG |
procedure start;
procedure use_p_proc;
procedure use_skill_on_p_proc;
procedure use_obj_on_p_proc;
procedure look_at_p_proc;
procedure description_p_proc;
procedure damage_p_proc;
procedure map_enter_p_proc;
procedure map_update_p_proc;
procedure Trapped_And_Locked;
procedure Locked_Door;
procedure Trapped_Door;
procedure Damage_Dude;
procedure Skill_Checks;
procedure Stat_Checks;
procedure Locks_Check;
procedure Display_Armed_And_Locked;
procedure Display_Locked;
procedure Display_Trapped;
variable Only_Once;
variable Locks;
variable Traps;
variable Per;
procedure start
begin
if (script_action == 6) then begin
call use_p_proc;
end
else begin
if (script_action == 15) then begin
call map_enter_p_proc;
end
else begin
if (script_action == 23) then begin
call map_update_p_proc;
end
else begin
if (script_action == 7) then begin
call use_obj_on_p_proc;
end
else begin
if (script_action == 21) then begin
call look_at_p_proc;
end
else begin
if (script_action == 3) then begin
call description_p_proc;
end
else begin
if (script_action == 8) then begin
call use_skill_on_p_proc;
end
else begin
if (script_action == 14) then begin
call damage_p_proc;
end
end
end
end
end
end
end
end
end
procedure use_p_proc
begin
variable LVar0 := 0;
LVar0 := roll_vs_skill(source_obj, 11, -20);
if (global_var(224) == 0) then begin
script_overrides;
display_msg(message_str(305, 205));
end
else begin
if (local_var(2) == 0) then begin
if (is_success(LVar0)) then begin
script_overrides;
display_msg(message_str(305, 204));
reg_anim_func(2, source_obj);
end
else begin
if (obj_is_locked(self_obj)) then begin
script_overrides;
set_local_var(0, local_var(0) + 1);
call Damage_Dude;
end
else begin
script_overrides;
set_local_var(0, local_var(0) + 1);
call Damage_Dude;
end
end
end
else begin
if (local_var(3) == 0) then begin
script_overrides;
display_msg(message_str(305, 105));
end
end
end
end
procedure use_skill_on_p_proc
begin
if ((local_var(2) == 0) and obj_is_locked(self_obj)) then begin
call Trapped_And_Locked;
end
else begin
if (local_var(2) == 0) then begin
call Trapped_Door;
end
else begin
if (obj_is_locked(self_obj)) then begin
call Locked_Door;
end
end
end
end
procedure use_obj_on_p_proc
begin
variable LVar0 := 0;
variable LVar1 := 0;
variable LVar2 := 0;
LVar0 := obj_pid(obj_being_used_with);
if (LVar0 == 77) then begin
script_overrides;
if (local_var(2) == 0) then begin
LVar1 := roll_vs_skill(source_obj, 11, -20);
if (is_success(LVar1)) then begin
display_msg(204);
reg_anim_func(2, source_obj);
end
else begin
set_local_var(0, local_var(0) + 1);
call Damage_Dude;
end
end
if (obj_is_locked(self_obj)) then begin
LVar2 := roll_vs_skill(source_obj, 9, -10);
if (is_success(LVar2)) then begin
obj_unlock(self_obj);
set_local_var(3, 1);
display_msg(message_str(305, 109));
display_msg(message_str(766, 103) + "45" + message_str(766, 104));
give_exp_points(45);
end
else begin
if (is_critical(LVar2)) then begin
display_msg(message_str(305, 121));
jam_lock(self_obj);
display_msg(message_str(305, 110));
rm_obj_from_inven(source_obj, LVar0);
destroy_object(LVar0);
end
else begin
display_msg(message_str(305, 122));
end
end
end
end
else begin
if (LVar0 == 96) then begin
script_overrides;
set_local_var(2, 1);
obj_unlock(self_obj);
set_local_var(3, 1);
display_msg(message_str(305, 106));
end
end
end
procedure look_at_p_proc
begin
script_overrides;
display_msg(message_str(305, 123));
end
procedure description_p_proc
begin
script_overrides;
if ((local_var(3) == 0) and (local_var(2) == 0)) then begin
call Skill_Checks;
call Display_Armed_And_Locked;
end
else begin
if (local_var(2) == 0) then begin
call Skill_Checks;
call Display_Trapped;
end
else begin
if (local_var(3) == 0) then begin
call Locks_Check;
call Display_Locked;
end
else begin
display_msg(message_str(305, 123));
end
end
end
end
procedure damage_p_proc
begin
if (local_var(1) > 3) then begin
set_local_var(2, 1);
set_obj_visibility(self_obj, 1);
obj_open(self_obj);
set_local_var(3, 1);
end
end
procedure map_enter_p_proc
begin
if (local_var(3) == 0) then begin
obj_lock(self_obj);
end
end
procedure map_update_p_proc
begin
if (local_var(3) == 0) then begin
obj_lock(self_obj);
end
else begin
obj_unlock(self_obj);
end
end
procedure Trapped_And_Locked
begin
variable LVar0 := 0;
variable LVar1 := 0;
if (action_being_used == 11) then begin
script_overrides;
LVar0 := roll_vs_skill(source_obj, 11, -20);
if (is_success(LVar0)) then begin
display_msg(message_str(305, 113));
set_local_var(2, 1);
display_msg(message_str(766, 103) + "45" + message_str(766, 104));
give_exp_points(45);
end
else begin
if (is_critical(LVar0)) then begin
display_msg(message_str(305, 114));
jam_lock(self_obj);
display_msg(message_str(305, 110));
if (local_var(0) == 0) then begin
set_local_var(0, 4);
end
else begin
set_local_var(0, local_var(0) + 4);
end
call Damage_Dude;
end
else begin
set_local_var(0, local_var(0) + 1);
display_msg(message_str(305, 115));
call Damage_Dude;
end
end
end
else begin
if (action_being_used == 9) then begin
script_overrides;
LVar0 := roll_vs_skill(source_obj, 9, -30);
LVar1 := roll_vs_skill(source_obj, 11, -20);
if (is_success(LVar1)) then begin
if (is_success(LVar0)) then begin
obj_unlock(self_obj);
set_local_var(3, 1);
display_msg(message_str(305, 116));
display_msg(message_str(766, 103) + "55" + message_str(766, 104));
give_exp_points(55);
end
else begin
if (is_critical(LVar0)) then begin
jam_lock(self_obj);
display_msg(message_str(305, 110));
set_local_var(0, local_var(0) + 2);
display_msg(message_str(305, 117));
call Damage_Dude;
end
else begin
set_local_var(0, local_var(0) + 1);
display_msg(message_str(305, 118));
call Damage_Dude;
end
end
end
else begin
if (is_critical(LVar1)) then begin
display_msg(message_str(305, 120));
if (local_var(0) == 0) then begin
set_local_var(0, 4);
end
else begin
set_local_var(0, local_var(0) + 4);
end
call Damage_Dude;
end
else begin
set_local_var(0, local_var(0) + 1);
display_msg(message_str(305, 119));
call Damage_Dude;
end
end
end
end
end
procedure Locked_Door
begin
variable LVar0 := 0;
if (action_being_used == 9) then begin
script_overrides;
LVar0 := roll_vs_skill(source_obj, 9, -30);
if (is_success(LVar0)) then begin
obj_unlock(self_obj);
set_local_var(3, 1);
display_msg(message_str(305, 116));
display_msg(message_str(766, 103) + "55" + message_str(766, 104));
give_exp_points(55);
end
else begin
if (is_critical(LVar0)) then begin
display_msg(message_str(305, 121));
jam_lock(self_obj);
display_msg(message_str(305, 110));
game_time_advance(game_ticks(600));
end
else begin
display_msg(message_str(305, 122));
end
end
end
end
procedure Trapped_Door
begin
variable LVar0 := 0;
if (action_being_used == 11) then begin
script_overrides;
LVar0 := roll_vs_skill(source_obj, 11, -20);
if (is_success(LVar0)) then begin
display_msg(message_str(305, 113));
set_local_var(2, 1);
display_msg(message_str(766, 103) + "45" + message_str(766, 104));
give_exp_points(45);
end
else begin
if (is_critical(LVar0)) then begin
display_msg(message_str(305, 114));
if (local_var(0) == 0) then begin
set_local_var(0, 4);
end
else begin
set_local_var(0, local_var(0) + 4);
end
call Damage_Dude;
end
else begin
set_local_var(0, local_var(0) + 1);
display_msg(message_str(305, 115));
call Damage_Dude;
end
end
end
end
procedure Damage_Dude
begin
critter_dmg(source_obj, local_var(0), 4 bwor 256);
if (local_var(0) == 1) then begin
display_msg(message_str(305, 101));
end
else begin
display_msg(message_str(305, 102) + local_var(0) + message_str(305, 103));
end
end
procedure Skill_Checks
begin
variable LVar0 := 0;
variable LVar1 := 0;
variable LVar2 := 0;
LVar0 := roll_vs_skill(source_obj, 11, 0);
LVar1 := roll_vs_skill(source_obj, 9, -10);
LVar2 := do_check(source_obj, 1, 0);
if (is_success(LVar0)) then begin
if (is_critical(LVar0)) then begin
call Locks_Check;
Traps := 3;
end
else begin
call Locks_Check;
Traps := 2;
end
end
else begin
if (is_critical(LVar0)) then begin
call Locks_Check;
Traps := 0;
end
else begin
call Locks_Check;
Traps := 1;
end
end
end
procedure Stat_Checks
begin
variable LVar0 := 0;
LVar0 := do_check(source_obj, 1, 0);
if (is_success(LVar0)) then begin
if (is_critical(LVar0)) then begin
Per := 3;
end
else begin
Per := 2;
end
end
else begin
if (is_critical(LVar0)) then begin
Per := 0;
end
else begin
Per := 1;
end
end
end
procedure Locks_Check
begin
variable LVar0 := 0;
variable LVar1 := 0;
LVar0 := roll_vs_skill(source_obj, 9, -10);
LVar1 := do_check(source_obj, 1, 0);
if (is_success(LVar0)) then begin
if (is_critical(LVar0)) then begin
call Stat_Checks;
Locks := 3;
end
else begin
call Stat_Checks;
Locks := 2;
end
end
else begin
if (is_critical(LVar0)) then begin
call Stat_Checks;
Locks := 0;
end
else begin
call Stat_Checks;
Locks := 1;
end
end
end
procedure Display_Armed_And_Locked
begin
if (Per == 0) then begin
if (Locks == 0) then begin
if (Traps == 0) then begin
display_msg(message_str(305, 124));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 125));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 126));
end
else begin
display_msg(message_str(305, 127));
end
end
end
end
else begin
if (Locks == 1) then begin
if (Traps == 0) then begin
display_msg(message_str(305, 128));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 129));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 130));
end
else begin
display_msg(message_str(305, 131));
end
end
end
end
else begin
if (Locks == 2) then begin
if (Traps == 0) then begin
display_msg(message_str(305, 132));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 133));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 134));
end
else begin
display_msg(message_str(305, 135));
end
end
end
end
else begin
if (Traps == 0) then begin
display_msg(message_str(305, 136));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 137));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 138));
end
else begin
display_msg(message_str(305, 139));
end
end
end
end
end
end
end
else begin
if (Per == 1) then begin
if (Locks == 0) then begin
if (Traps == 0) then begin
display_msg(message_str(305, 140));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 141));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 142));
end
else begin
display_msg(message_str(305, 143));
end
end
end
end
else begin
if (Locks == 1) then begin
if (Traps == 0) then begin
display_msg(message_str(305, 144));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 145));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 146));
end
else begin
display_msg(message_str(305, 147));
end
end
end
end
else begin
if (Locks == 2) then begin
if (Traps == 0) then begin
display_msg(message_str(305, 148));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 149));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 150));
end
else begin
display_msg(message_str(305, 151));
end
end
end
end
else begin
if (Traps == 0) then begin
display_msg(message_str(305, 152));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 153));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 154));
end
else begin
display_msg(message_str(305, 155));
end
end
end
end
end
end
end
else begin
if (Per == 2) then begin
if (Locks == 0) then begin
if (Traps == 0) then begin
display_msg(message_str(305, 156));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 157));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 158));
end
else begin
display_msg(message_str(305, 159));
end
end
end
end
else begin
if (Locks == 1) then begin
if (Traps == 0) then begin
display_msg(message_str(305, 160));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 161));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 162));
end
else begin
display_msg(message_str(305, 163));
end
end
end
end
else begin
if (Locks == 2) then begin
if (Traps == 0) then begin
display_msg(message_str(305, 164));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 165));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 166));
end
else begin
display_msg(message_str(305, 167));
end
end
end
end
else begin
if (Traps == 0) then begin
display_msg(message_str(305, 168));
end
else begin
if (Traps == 1) then begin
display_msg(message_str(305, 169));
end
else begin
if (Traps == 2) then begin
display_msg(message_str(305, 170));
end
else begin
display_msg(message_str(305, 171));
end
end
end