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



Fallout Wiki
56,119Articles
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 Brotherhood of Steel Doctor
MSG file BOSLORI.MSG
Transcript.png

procedure start;
procedure combat;
procedure critter_p_proc;
procedure pickup_p_proc;
procedure talk_p_proc;
procedure destroy_p_proc;
procedure look_at_p_proc;
procedure boslori00;
procedure boslori01;
procedure boslori02;
procedure boslori03;
procedure boslori04;
procedure boslori05;
procedure boslori06;
procedure boslori07;
procedure boslori08;
procedure boslori09;
procedure boslori10;
procedure boslori11;
procedure boslori12;
procedure boslori13;
procedure boslori14;
procedure boslori15;
procedure boslori16;
procedure boslori17;
procedure boslori18;
procedure boslori19;
procedure boslori20;
procedure Dumb02;
procedure Dumb03;
procedure Dumb04;
procedure Dumb05;
procedure Dumb06;
procedure Dumb06a;
procedure raisiq;
procedure boslori22;
procedure bosloriend;
procedure sorry;
procedure do_dialog;
variable hostile;
variable only_once := 1;
variable heal;
variable cost;
variable money;
variable temp;
variable rad_level;
variable Hurting;
variable armor;
variable bag_ptr;
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 (only_once) then begin
                only_once := 0;
                critter_add_trait(self_obj, 1, 6, 44);
                critter_add_trait(self_obj, 1, 5, 63);
        end
        if (script_action == 21) then begin
                call look_at_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 talk_p_proc;
                        end
                        else begin
                                if (script_action == 12) then begin
                                        call critter_p_proc;
                                end
                                else begin
                                        if (script_action == 18) then begin
                                                call destroy_p_proc;
                                        end
                                end
                        end
                end
        end
end
procedure combat
begin
        hostile := 1;
end
procedure critter_p_proc
begin
        if (global_var(250)) then begin
                hostile := 1;
        end
        if (global_var(250)) then begin
                hostile := 1;
        end
        if (tile_distance_objs(self_obj, dude_obj) > 12) then begin
                hostile := 0;
        end
        if (hostile) then begin
                set_global_var(250, 1);
                hostile := 0;
                attack_complex(dude_obj, 0, 1, 0, 0, 30000, 0, 0);
        end
end
procedure pickup_p_proc
begin
        if (source_obj == dude_obj) then begin
                hostile := 1;
        end
end
procedure talk_p_proc
begin
        call get_reaction;
        start_gdialog(675, self_obj, 4, -1, -1);
        gsay_start;
        call do_dialog;
        gsay_end;
        end_dialogue;
end
procedure destroy_p_proc
begin
        set_global_var(250, 1);
        rm_timer_event(self_obj);
        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
procedure look_at_p_proc
begin
        script_overrides;
        display_msg(message_str(675, 100));
end
procedure boslori00
begin
        heal := get_critter_stat(dude_obj, 7) - get_critter_stat(dude_obj, 35);
        gsay_reply(675, 102);
        if (heal > 0) then begin
                giq_option(4, 675, 103, boslori04, 50);
        end
        giq_option(5, 675, 104, boslori05, 50);
        if (local_var(5) != 1) then begin
                giq_option(4, 675, 105, boslori07, 50);
        end
        else begin
                giq_option(4, 675, 106, boslori09, 50);
        end
        if (local_var(11) == 1) then begin
                giq_option(-3, 675, 107, boslori01, 50);
        end
        else begin
                giq_option(-3, 675, 107, Dumb02, 50);
        end
end
procedure boslori01
begin
        gsay_message(675, 108, 50);
        if (heal > 0) then begin
                call boslori02;
        end
        else begin
                call boslori03;
        end
end
procedure boslori02
begin
        critter_heal(dude_obj, heal);
        gsay_message(675, 109, 50);
end
procedure boslori03
begin
        gsay_message(675, 110, 50);
end
procedure boslori04
begin
        critter_heal(dude_obj, heal);
        gsay_message(675, random(112, 116), 50);
end
procedure boslori05
begin
        gsay_message(675, 117, 50);
        gfade_out(600);
        rad_level := get_critter_stat(dude_obj, 37);
        radiation_dec(dude_obj, rad_level);
        game_time_advance(game_ticks(86400));
        gfade_in(600);
        gsay_message(675, 146, 50);
end
procedure boslori06
begin
        gsay_message(675, 118, 50);
end
procedure boslori07
begin
        gsay_reply(675, 119);
        giq_option(4, 675, 120, boslori08, 50);
        giq_option(4, 675, 121, bosloriend, 50);
end
procedure boslori08
begin
        set_local_var(5, 1);
        gsay_message(675, 122, 50);
        call boslori10;
end
procedure boslori09
begin
        gsay_reply(675, 126);
        call boslori10;
end
procedure boslori10
begin
        if (local_var(6) != 1) then begin
                giq_option(4, 675, 127, boslori11, 50);
        end
        if (local_var(7) != 1) then begin
                giq_option(4, 675, 128, boslori12, 50);
        end
        if (local_var(8) != 1) then begin
                giq_option(4, 675, 129, boslori13, 50);
        end
        if (local_var(9) != 1) then begin
                giq_option(4, 675, 130, boslori14, 50);
        end
        if (local_var(10) != 1) then begin
                giq_option(4, 675, 131, boslori15, 50);
        end
        giq_option(4, 675, 132, bosloriend, 50);
end
procedure boslori11
begin
        temp := get_critter_stat(dude_obj, 0);
        if (temp > 9) then begin
                call sorry;
        end
        else begin
                gsay_reply(675, 133);
                giq_option(4, 675, 135, boslori18, 50);
                giq_option(4, 675, 136, boslori17, 50);
        end
end
procedure boslori12
begin
        temp := get_critter_stat(dude_obj, 1);
        if (temp > 9) then begin
                call sorry;
        end
        else begin
                gsay_reply(675, 137);
                giq_option(4, 675, 135, boslori19, 50);
                giq_option(4, 675, 136, boslori17, 50);
        end
end
procedure boslori13
begin
        temp := get_critter_stat(dude_obj, 2);
        if (temp > 9) then begin
                call sorry;
        end
        else begin
                gsay_reply(675, 139);
                giq_option(4, 675, 135, boslori20, 50);
                giq_option(4, 675, 136, boslori17, 50);
        end
end
procedure boslori14
begin
        temp := get_critter_stat(dude_obj, 4);
        if (temp > 9) then begin
                call sorry;
        end
        else begin
                gsay_reply(675, 141);
                giq_option(4, 675, 135, raisiq, 50);
                giq_option(4, 675, 136, boslori17, 50);
        end
end
procedure boslori15
begin
        temp := get_critter_stat(dude_obj, 5);
        if (temp > 9) then begin
                call sorry;
        end
        else begin
                gsay_reply(675, 143);
                giq_option(4, 675, 135, boslori22, 50);
                giq_option(4, 675, 136, boslori17, 50);
        end
end
procedure boslori16
begin
        gsay_message(675, random(147, 149), 50);
end
procedure boslori17
begin
        gsay_message(675, 153, 50);
        call boslori10;
end
procedure boslori18
begin
        cost := 2000;
        if (item_caps_total(dude_obj) >= cost) then begin
                bag_ptr := create_object_sid(16777262, 0, 0, 860);
                move_to(bag_ptr, 0, 0);
                armor := critter_inven_obj(dude_obj, 0);
                if (armor != 0) then begin
                        move_obj_inven_to_obj(dude_obj, bag_ptr);
                        move_obj_inven_to_obj(bag_ptr, dude_obj);
                        destroy_object(bag_ptr);
                end
                set_local_var(6, 1);
                item_caps_adjust(dude_obj, -cost);
                gsay_message(675, 154, 50);
                gfade_out(600);
                game_time_advance(game_ticks(3 * 604800));
                gfade_in(600);
                temp := get_critter_stat(dude_obj, 0);
                set_critter_stat(dude_obj, 0, 1);
                gsay_message(675, 156, 50);
        end
        else begin
                call boslori16;
        end
end
procedure boslori19
begin
        cost := 4000;
        if (item_caps_total(dude_obj) >= cost) then begin
                set_local_var(7, 1);
                item_caps_adjust(dude_obj, -cost);
                gsay_message(675, 159, 50);
                gfade_out(600);
                game_time_advance(game_ticks(604800));
                gfade_in(600);
                temp := get_critter_stat(dude_obj, 1);
                set_critter_stat(dude_obj, 1, 1);
                gsay_message(675, 161, 50);
        end
        else begin
                call boslori16;
        end
end
procedure boslori20
begin
        cost := 3000;
        if (item_caps_total(dude_obj) >= cost) then begin
                set_local_var(8, 1);
                item_caps_adjust(dude_obj, -cost);
                gsay_message(675, 164, 50);
                gfade_out(600);
                game_time_advance(game_ticks(604800));
                gfade_in(600);
                temp := get_critter_stat(dude_obj, 2);
                set_critter_stat(dude_obj, 2, 1);
                gsay_message(675, 166, 50);
        end
        else begin
                call boslori16;
        end
end
procedure Dumb02
begin
        gsay_reply(675, 400);
        giq_option(-3, 675, 401, Dumb04, 50);
        giq_option(-3, 675, 402, Dumb03, 50);
end
procedure Dumb03
begin
        gsay_reply(675, 403);
        giq_option(-3, 675, 404, Dumb06a, 50);
        giq_option(-3, 675, 405, boslori05, 50);
        giq_option(-3, 675, 406, bosloriend, 50);
end
procedure Dumb04
begin
        variable LVar0 := 0;
        LVar0 := 3000;
        if (item_caps_total(dude_obj) >= LVar0) then begin
                set_local_var(9, 1);
                set_local_var(11, 1);
                item_caps_adjust(dude_obj, -LVar0);
                gsay_message(675, 164, 50);
                gfade_out(600);
                game_time_advance(game_ticks(604800));
                gfade_in(600);
                temp := get_critter_stat(dude_obj, 4);
                set_critter_stat(dude_obj, 4, 1);
                gsay_reply(675, 407);
                giq_option(4, 675, 409, Dumb06, 50);
                giq_option(-3, 675, 408, Dumb05, 50);
        end
        else begin
                call boslori16;
        end
end
procedure Dumb05
begin
        gsay_message(675, 410, 50);
end
procedure Dumb06
begin
        gsay_reply(675, 411);
        giq_option(4, 675, 412, bosloriend, 50);
end
procedure Dumb06a
begin
        Hurting := get_critter_stat(dude_obj, 7) - get_critter_stat(dude_obj, 35);
        critter_heal(dude_obj, Hurting);
        gsay_message(675, 413, 50);
end
procedure raisiq
begin
        cost := 6000;
        if (item_caps_total(dude_obj) >= cost) then begin
                set_local_var(9, 1);
                item_caps_adjust(dude_obj, -cost);
                gsay_message(675, 168, 50);
                gfade_out(600);
                game_time_advance(game_ticks(3 * 604800));
                gfade_in(600);
                temp := get_critter_stat(dude_obj, 4);
                set_critter_stat(dude_obj, 4, 1);
                gsay_message(675, 170, 50);
        end
        else begin
                call boslori16;
        end
end
procedure boslori22
begin
        cost := 5000;
        if (item_caps_total(dude_obj) >= cost) then begin
                set_local_var(10, 1);
                item_caps_adjust(dude_obj, -cost);
                gsay_message(675, 174, 50);
                gfade_out(600);
                game_time_advance(game_ticks(3 * 604800));
                gfade_in(600);
                temp := get_critter_stat(dude_obj, 5);
                set_critter_stat(dude_obj, 5, 1);
                gsay_message(675, 176, 50);
        end
        else begin
                call boslori16;
        end
end
procedure bosloriend
begin
end
procedure sorry
begin
        gsay_message(675, 300, 50);
end
procedure do_dialog
begin
        call boslori00;
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