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



Fallout Wiki
57,010Articles
Holiday Decor 2023.png
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 Blade Greg from the Boneyard
MSG file BYGREG.MSG
Transcript.png

procedure Start;
procedure look_at_p_proc;
procedure description_p_proc;
procedure talk_p_proc;
procedure critter_p_proc;
procedure damage_p_proc;
procedure destroy_p_proc;
procedure pickup_p_proc;
procedure BYGreg03;
procedure BYGreg04;
procedure BYGreg05;
procedure BYGreg06;
procedure BYGreg07;
procedure BYGregEnd;
variable Initialize := 1;
variable PsstTime;
variable DisplayMessage := 100;
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 (Initialize) then begin
                critter_add_trait(self_obj, 1, 6, 47);
                critter_add_trait(self_obj, 1, 5, 27);
                Initialize := 0;
        end
end
procedure look_at_p_proc
begin
        script_overrides;
        if (local_var(4) == 1) then begin
                display_msg(message_str(925, 101));
        end
        else begin
                display_msg(message_str(925, 100));
        end
end
procedure description_p_proc
begin
        script_overrides;
        if (local_var(4) == 1) then begin
                display_msg(message_str(925, 101));
        end
        else begin
                display_msg(message_str(925, 100));
        end
end
procedure talk_p_proc
begin
        if (global_var(253) == 1) then begin
                float_msg(self_obj, message_str(669, random(100, 105)), 2);
        end
        else begin
                if ((local_var(5) == 1) and (get_critter_stat(dude_obj, 4) < 4)) then begin
                        float_msg(self_obj, message_str(925, random(115, 119)), 0);
                end
                else begin
                        call get_reaction;
                        start_gdialog(925, self_obj, -1, -1, -1);
                        gsay_start;
                        if (local_var(4) == 0) then begin
                                DisplayMessage := 102;
                        end
                        else begin
                                DisplayMessage := 103;
                        end
                        call BYGreg03;
                        gsay_end;
                        end_dialogue;
                end
        end
end
procedure critter_p_proc
begin
        if ((((game_time / 10) - PsstTime) >= 30) and (tile_distance_objs(self_obj, dude_obj) <= 4) and (local_var(5) == 1)) then begin
                float_msg(self_obj, message_str(925, random(115, 119)), 0);
                PsstTime := game_time / 10;
        end
        if (obj_can_see_obj(self_obj, dude_obj)) then begin
                if (global_var(253) == 1) then begin
                        attack_complex(dude_obj, 0, 1, 0, 0, 30000, 0, 0);
                end
        end
end
procedure damage_p_proc
begin
        if (source_obj == dude_obj) then begin
                set_global_var(253, 1);
        end
end
procedure destroy_p_proc
begin
        if (source_obj == dude_obj) then begin
                set_global_var(253, 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 pickup_p_proc
begin
        set_global_var(253, 1);
end
procedure BYGreg03
begin
        gsay_reply(925, DisplayMessage);
        if (local_var(4) == 0) then begin
                gsay_option(925, 105, BYGreg04, 50);
        end
        gsay_option(925, 106, BYGreg05, 50);
        gsay_option(925, 107, BYGreg07, 50);
        gsay_option(925, 108, BYGregEnd, 50);
end
procedure BYGreg04
begin
        DisplayMessage := 109;
        set_local_var(4, 1);
        call BYGreg03;
end
procedure BYGreg05
begin
        gsay_reply(925, 110);
        gsay_option(925, 111, BYGreg06, 50);
        gsay_option(925, 112, BYGregEnd, 50);
end
procedure BYGreg06
begin
        gsay_reply(925, 113);
        set_local_var(5, 1);
end
procedure BYGreg07
begin
        gsay_reply(925, 114);
        set_local_var(5, 1);
end
procedure BYGregEnd
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