×
Create a new article
Write your page title here:
We currently have 54,069 articles on Fallout Wiki. Type your article name above or click on one of the titles below and start writing!



Fallout Wiki
54,069Articles
FO76 ui roleplay team.pngThis is the transcript of a script file, which runs certain tasks in the game upon execution.
Details
Type Decompiled script
SCRIPTS.LST comment Guard in Junktown
MSG file ASSBLOW.MSG
Transcript.png

procedure start;
procedure critter_p_proc;
procedure damage_p_proc;
procedure destroy_p_proc;
procedure map_enter_p_proc;
procedure pickup_p_proc;
procedure timed_event_p_proc;
procedure do_dialogue;
procedure pre_dialogue;
procedure guard00a;
procedure guard01a;
procedure guard02a;
procedure guard00;
procedure guard00i;
procedure guard00ii;
procedure guard01;
procedure guard01i;
procedure guard02;
procedure guard02i;
procedure guard03;
procedure guard04;
procedure guard05;
procedure guard06;
procedure guard06i;
procedure guard07;
procedure guard08;
procedure guard08i;
procedure guard09;
procedure guard10;
procedure guard11;
procedure guard12;
procedure guard12i;
procedure guard13;
procedure guard14;
procedure guard15;
procedure guard16;
procedure guard17;
procedure Guard18;
procedure guard00N;
procedure guard00Na;
procedure guard01N;
procedure guard02N;
procedure guard03N;
procedure guard04N;
procedure guardend;
variable sneaking;
variable RoundCounter;
variable hostile;
variable warned;
variable line166flag;
import variable weapon_checked;
import variable sneak_checked;
import variable times_caught_sneaking;
procedure get_reaction;
procedure ReactToLevel;
procedure LevelToReact;
procedure UpReact;
procedure DownReact;
procedure BottomReact;
procedure TopReact;
procedure BigUpReact;
procedure BigDownReact;
procedure UpReactLevel;
procedure DownReactLevel;
procedure Goodbyes;
variable exit_line;
procedure start
begin
        if (script_action == 12) then begin
                call critter_p_proc;
        end
        else begin
                if (script_action == 14) then begin
                        call damage_p_proc;
                end
                else begin
                        if (script_action == 18) then begin
                                call destroy_p_proc;
                        end
                        else begin
                                if (script_action == 15) then begin
                                        call map_enter_p_proc;
                                end
                                else begin
                                        if (script_action == 4) then begin
                                                call pickup_p_proc;
                                        end
                                        else begin
                                                if (script_action == 11) then begin
                                                        call pre_dialogue;
                                                end
                                                else begin
                                                        if (script_action == 21) then begin
                                                                script_overrides;
                                                                display_msg(message_str(135, 100));
                                                        end
                                                        else begin
                                                                if (script_action == 22) then begin
                                                                        call timed_event_p_proc;
                                                                end
                                                        end
                                                end
                                        end
                                end
                        end
                end
        end
end
procedure critter_p_proc
begin
        if (hostile and not(local_var(4))) then begin
                hostile := 0;
                set_local_var(4, 1);
                attack_complex(dude_obj, 0, 1, 0, 0, 30000, 0, 0);
        end
        else begin
                if (obj_can_see_obj(self_obj, dude_obj)) then begin
                        if (global_var(247) == 1) then begin
                                if (line166flag == 0) then begin
                                        dialogue_system_enter;
                                end
                        end
                        else begin
                                if ((obj_item_subtype(critter_inven_obj(dude_obj, 1)) == 3) or (obj_item_subtype(critter_inven_obj(dude_obj, 2)) == 3) and not(local_var(4)) and (global_var(36) == 0) and (global_var(104) == 0)) then begin
                                        if (not(weapon_checked)) then begin
                                                weapon_checked := 1;
                                                rm_timer_event(self_obj);
                                                add_timer_event(self_obj, game_ticks(5), 1);
                                                dialogue_system_enter;
                                        end
                                end
                                else begin
                                        if (using_skill(dude_obj, 8) and not(sneak_checked)) then begin
                                                sneaking := 1;
                                                sneak_checked := 1;
                                                rm_timer_event(self_obj);
                                                add_timer_event(self_obj, game_ticks(5), 2);
                                                dialogue_system_enter;
                                        end
                                end
                        end
                end
                if ((game_time_hour >= 1900) or (game_time_hour < 600)) then begin
                        if (tile_distance(tile_num(dude_obj), 27106) > tile_distance(tile_num(dude_obj), 25905)) then begin
                                if (local_var(5) == 0) then begin
                                        if (tile_distance_objs(self_obj, dude_obj) < 12) then begin
                                                if (not(warned)) then begin
                                                        if (not(using_skill(dude_obj, 8))) then begin
                                                                warned := 1;
                                                                dialogue_system_enter;
                                                                rm_timer_event(self_obj);
                                                                add_timer_event(self_obj, game_ticks(3), 4);
                                                        end
                                                end
                                        end
                                end
                        end
                end
        end
end
procedure damage_p_proc
begin
        if (source_obj == dude_obj) then begin
                set_global_var(247, 1);
                set_local_var(6, 1);
        end
end
procedure destroy_p_proc
begin
        if (source_obj == dude_obj) then begin
                set_global_var(247, 1);
                if (source_obj == dude_obj) then begin
                        if (((global_var(160) + global_var(159)) >= 25) and ((global_var(159) > (2 * global_var(160))) or (global_var(156) == 1))) then begin
                                set_global_var(156, 1);
                                set_global_var(157, 0);
                        end
                        if (((global_var(160) + global_var(159)) >= 25) and ((global_var(160) > (3 * global_var(159))) or (global_var(157) == 1))) then begin
                                set_global_var(157, 1);
                                set_global_var(156, 0);
                        end
                        set_global_var(159, global_var(159) + 1);
                        if ((global_var(159) % 2) == 0) then begin
                                set_global_var(155, global_var(155) - 1);
                        end
                end
        end
end
procedure map_enter_p_proc
begin
        if (global_var(15) == 1) then begin
                kill_critter(self_obj, 59);
        end
end
procedure pickup_p_proc
begin
        hostile := 1;
end
procedure timed_event_p_proc
begin
        if (fixed_param == 1) then begin
                if ((obj_item_subtype(critter_inven_obj(dude_obj, 1)) == 3) or (obj_item_subtype(critter_inven_obj(dude_obj, 2)) == 3)) then begin
                        hostile := 1;
                end
                else begin
                        weapon_checked := 0;
                end
        end
        else begin
                if (fixed_param == 2) then begin
                        sneak_checked := 0;
                end
                else begin
                        if (fixed_param == 3) then begin
                                hostile := 1;
                        end
                        else begin
                                if (fixed_param == 4) then begin
                                        if ((game_time_hour >= 1900) or (game_time_hour < 600)) then begin
                                                if (tile_distance(tile_num(dude_obj), 27106) > tile_distance(tile_num(dude_obj), 25905)) then begin
                                                        if (local_var(5) == 0) then begin
                                                                if (not(using_skill(dude_obj, 8))) then begin
                                                                        hostile := 1;
                                                                end
                                                        end
                                                end
                                                else begin
                                                        warned := 0;
                                                end
                                        end
                                end
                        end
                end
        end
end
procedure do_dialogue
begin
        call get_reaction;
        if ((game_time_hour >= 1900) or (game_time_hour < 600) and (local_var(7) == 1)) then begin
                if (local_var(5) == 1) then begin
                        float_msg(self_obj, message_str(135, 167), 0);
                end
                else begin
                        float_msg(self_obj, message_str(135, 156), 0);
                end
        end
        else begin
                start_gdialog(135, self_obj, 4, -1, -1);
                gsay_start;
                if ((obj_item_subtype(critter_inven_obj(dude_obj, 1)) == 3) or (obj_item_subtype(critter_inven_obj(dude_obj, 2)) == 3) and not(local_var(4))) then begin
                        call guard00;
                end
                else begin
                        if (sneaking) then begin
                                call guard06;
                        end
                        else begin
                                if ((game_time_hour >= 1900) or (game_time_hour < 600)) then begin
                                        call guard00N;
                                end
                                else begin
                                        if (local_var(8) == 0) then begin
                                                call guard10;
                                        end
                                end
                        end
                end
                gsay_end;
                end_dialogue;
        end
end
procedure pre_dialogue
begin
        if ((global_var(247) == 1) and (line166flag == 0)) then begin
                call Guard18;
        end
        else begin
                if ((obj_item_subtype(critter_inven_obj(dude_obj, 1)) == 3) or (obj_item_subtype(critter_inven_obj(dude_obj, 2)) == 3) and not(local_var(4))) then begin
                        call do_dialogue;
                end
                else begin
                        if (sneaking) then begin
                                call do_dialogue;
                        end
                        else begin
                                if ((game_time_hour >= 1900) or (game_time_hour < 600)) then begin
                                        call do_dialogue;
                                end
                                else begin
                                        if (local_var(8) == 0) then begin
                                                call do_dialogue;
                                        end
                                        else begin
                                                call guard02a;
                                        end
                                end
                        end
                end
        end
end
procedure guard00a
begin
        float_msg(self_obj, message_str(135, random(101, 103)), 2);
end
procedure guard01a
begin
        float_msg(self_obj, message_str(135, random(104, 106)), 3);
end
procedure guard02a
begin
        float_msg(self_obj, message_str(135, random(107, 109)), 0);
end
procedure guard00
begin
        gsay_reply(135, 110);
        giq_option(4, 135, 111, guard01, 50);
        giq_option(4, 135, 112, guard00i, 51);
        giq_option(4, 634, 105, guardend, 50);
        giq_option(6, 135, 113, guard00ii, 49);
        giq_option(-3, 135, 114, guard05, 50);
end
procedure guard00i
begin
        call BigDownReact;
        call guard02;
end
procedure guard00ii
begin
        call BigUpReact;
        call guard04;
end
procedure guard01
begin
        gsay_reply(135, 115);
        giq_option(4, 135, 116, guard02, 50);
        giq_option(4, 135, 117, guard01i, 50);
end
procedure guard01i
begin
        if (is_success(roll_vs_skill(dude_obj, 14, -30))) then begin
                call guard03;
        end
        else begin
                call guard02;
        end
end
procedure guard02
begin
        gsay_reply(135, 118);
        giq_option(4, 135, 119, guardend, 50);
        giq_option(4, 135, 120, guard02i, 51);
end
procedure guard02i
begin
        hostile := 1;
end
procedure guard03
begin
        set_local_var(4, 1);
        gsay_message(135, 121, 50);
end
procedure guard04
begin
        gsay_message(135, 122, 50);
end
procedure guard05
begin
        gsay_message(135, 123, 50);
end
procedure guard06
begin
        sneaking := 0;
        gsay_reply(135, 124);
        giq_option(4, 135, 125, guard07, 50);
        giq_option(5, 135, 126, guard06i, 50);
        giq_option(-3, 135, 127, guard07, 50);
end
procedure guard06i
begin
        variable LVar0 := 0;
        times_caught_sneaking := times_caught_sneaking + 1;
        LVar0 := -5 * times_caught_sneaking;
        if (is_success(roll_vs_skill(dude_obj, 14, LVar0))) then begin
                call guard08;
        end
        else begin
                call guard07;
        end
end
procedure guard07
begin
        if (times_caught_sneaking > 3) then begin
                gsay_message(135, 129, 51);
                add_timer_event(self_obj, game_ticks(10), 3);
        end
        else begin
                gsay_message(135, 128, 51);
        end
end
procedure guard08
begin
        gsay_reply(135, 130);
        giq_option(5, 135, 131, guardend, 50);
        if (get_critter_stat(dude_obj, 34) == 0) then begin
                giq_option(5, 135, 132, guard08i, 50);
        end
        else begin
                giq_option(5, 135, 133, guard08i, 50);
        end
end
procedure guard08i
begin
        if (random(0, 1)) then begin
                call UpReact;
        end
        else begin
                call DownReact;
        end
end
procedure guard09
begin
        gsay_message(135, 134, 50);
end
procedure guard10
begin
        set_local_var(8, 1);
        gsay_reply(135, 135);
        giq_option(4, 135, 136, guardend, 50);
        giq_option(5, 135, 137, guard12, 50);
        giq_option(6, 135, 138, guard15, 50);
        giq_option(-3, 135, 139, guard11, 50);
end
procedure guard11
begin
        gsay_message(135, 140, 50);
end
procedure guard12
begin
        gsay_reply(135, 141);
        giq_option(5, 135, 142, guard12i, 50);
        giq_option(5, 135, 143, guard14, 50);
end
procedure guard12i
begin
        if (is_success(roll_vs_skill(dude_obj, 14, 15))) then begin
                call guard13;
        end
        else begin
                call guard14;
        end
end
procedure guard13
begin
        gsay_reply(135, 144);
        giq_option(5, 135, 145, guardend, 50);
        giq_option(5, 135, 146, BigDownReact, 51);
end
procedure guard14
begin
        gsay_message(135, 147, 50);
end
procedure guard15
begin
        gsay_reply(135, 148);
        giq_option(5, 135, 149, guardend, 50);
        if (get_critter_stat(dude_obj, 34) == 1) then begin
                giq_option(5, 135, 150, guard16, 50);
        end
end
procedure guard16
begin
        gsay_message(135, 152, 50);
end
procedure guard17
begin
        gsay_message(135, random(153, 155), 50);
end
procedure Guard18
begin
        float_msg(self_obj, message_str(135, 166), 2);
        rm_timer_event(self_obj);
        add_timer_event(self_obj, game_ticks(5), 3);
end
procedure guard00N
begin
        set_local_var(7, 1);
        gsay_reply(135, 156);
        giq_option(4, 135, 157, guard02N, 50);
        giq_option(4, 135, 158, guardend, 50);
        giq_option(5, 135, 159, guard00Na, 50);
        giq_option(-3, 135, 160, guard01N, 50);
end
procedure guard00Na
begin
        if (is_success(roll_vs_skill(dude_obj, 14, 0))) then begin
                call guard03N;
        end
        else begin
                call guard02N;
        end
end
procedure guard01N
begin
        gsay_message(135, 161, 50);
end
procedure guard02N
begin
        gsay_message(135, 162, 50);
end
procedure guard03N
begin
        set_local_var(5, 1);
        gsay_message(135, 163, 50);
end
procedure guard04N
begin
        set_local_var(5, 1);
        gsay_message(135, message_str(135, 164) + proto_data(obj_pid(dude_obj), 1) + message_str(135, 165), 50);
end
procedure guardend
begin
end
procedure get_reaction
begin
        if (local_var(2) == 0) then begin
                set_local_var(0, 50);
                set_local_var(1, 2);
                set_local_var(2, 1);
                set_local_var(0, local_var(0) + (5 * get_critter_stat(dude_obj, 3)) - 25);
                set_local_var(0, local_var(0) + (10 * has_trait(0, dude_obj, 10)));
                if (has_trait(0, dude_obj, 39)) then begin
                        if (global_var(155) > 0) then begin
                                set_local_var(0, local_var(0) + global_var(155));
                        end
                        else begin
                                set_local_var(0, local_var(0) - global_var(155));
                        end
                end
                else begin
                        if (local_var(3) == 1) then begin
                                set_local_var(0, local_var(0) - global_var(155));
                        end
                        else begin
                                set_local_var(0, local_var(0) + global_var(155));
                        end
                end
                if (global_var(158) > 2) then begin
                        set_local_var(0, local_var(0) - 30);
                end
                if (((global_var(160) + global_var(159)) >= 25) and ((global_var(160) > (3 * global_var(159))) or (global_var(157) == 1))) then begin
                        set_local_var(0, local_var(0) + 20);
                end
                if (((global_var(160) + global_var(159)) >= 25) and ((global_var(159) > (2 * global_var(160))) or (global_var(156) == 1))) then begin
                        set_local_var(0, local_var(0) - 20);
                end
                call ReactToLevel;
        end
end
procedure ReactToLevel
begin
        if (local_var(0) <= 25) then begin
                set_local_var(1, 1);
        end
        else begin
                if (local_var(0) <= 75) then begin
                        set_local_var(1, 2);
                end
                else begin
                        set_local_var(1, 3);
                end
        end
end
procedure LevelToReact
begin
        if (local_var(1) == 1) then begin
                set_local_var(0, random(1, 25));
        end
        else begin
                if (local_var(1) == 2) then begin
                        set_local_var(0, random(26, 75));
                end
                else begin
                        set_local_var(0, random(76, 100));
                end
        end
end
procedure UpReact
begin
        set_local_var(0, local_var(0) + 10);
        call ReactToLevel;
end
procedure DownReact
begin
        set_local_var(0, local_var(0) - 10);
        call ReactToLevel;
end
procedure BottomReact
begin
        set_local_var(1, 1);
        set_local_var(0, 1);
end
procedure TopReact
begin
        set_local_var(0, 100);
        set_local_var(1, 3);
end
procedure BigUpReact
begin
        set_local_var(0, local_var(0) + 25);
        call ReactToLevel;
end
procedure BigDownReact
begin
        set_local_var(0, local_var(0) - 25);
        call ReactToLevel;
end
procedure UpReactLevel
begin
        set_local_var(1, local_var(1) + 1);
        if (local_var(1) > 3) then begin
                set_local_var(1, 3);
        end
        call LevelToReact;
end
procedure DownReactLevel
begin
        set_local_var(1, local_var(1) - 1);
        if (local_var(1) < 1) then begin
                set_local_var(1, 1);
        end
        call LevelToReact;
end
procedure Goodbyes
begin
        exit_line := message_str(634, random(100, 105));
end