Fallout Wiki
Advertisement
Fallout Wiki
Details
Type Decompiled script
SCRIPTS.LST comment Harold
MSG file HAROLD.MSG
Transcript

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 Harold00;
procedure Harold00a;
procedure Harold00b;
procedure Harold01;
procedure Harold02;
procedure Harold03;
procedure Harold04;
procedure Harold05;
procedure Harold06;
procedure Harold07;
procedure Harold08;
procedure Harold09;
procedure Harold09a;
procedure Harold10;
procedure Harold10a;
procedure Harold11;
procedure Harold12;
procedure Harold13;
procedure Harold14;
procedure Harold15;
procedure Harold15a;
procedure Harold16;
procedure Harold17;
procedure Harold17a;
procedure Harold18;
procedure Harold19;
procedure Harold20;
procedure Harold21;
procedure Harold22;
procedure Harold23;
procedure Harold24;
procedure Harold25;
procedure Harold25a;
procedure Harold26;
procedure Harold26a;
procedure Harold26b;
procedure Harold27;
procedure Harold28;
procedure Harold29;
procedure Harold30;
procedure Harold31;
procedure Harold32;
procedure Harold33;
procedure Harold34;
procedure Harold36;
procedure Harold37;
procedure Harold38;
procedure Harold39;
procedure Harold39a;
procedure Harold39b;
procedure Harold40;
procedure Harold41;
procedure Harold41a;
procedure Harold42;
procedure Harold43;
procedure Harold43a;
procedure Harold43b;
procedure Harold44;
procedure Harold45;
procedure Harold47;
procedure Harold49;
procedure Harold50;
procedure Harold51;
procedure Harold52;
procedure Harold53;
procedure Harold54;
procedure Harold55;
procedure Harold56;
procedure Harold57;
procedure HaroldEnd;
variable hostile;
variable Only_Once := 1;
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, 41);
                critter_add_trait(self_obj, 1, 5, 53);
        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 (hostile) then begin
                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;
        if (local_var(4) == 0) then begin
                if (local_var(1) > 1) then begin
                        set_local_var(4, 1);
                        start_gdialog(45, self_obj, 4, 14, 3);
                        gsay_start;
                        call Harold00;
                        gsay_end;
                        end_dialogue;
                end
                else begin
                        start_gdialog(45, self_obj, 4, 14, 3);
                        gsay_start;
                        call Harold39;
                        gsay_end;
                        end_dialogue;
                end
        end
        else begin
                if (local_var(1) > 1) then begin
                        set_local_var(4, 1);
                        start_gdialog(45, self_obj, 4, 14, 3);
                        gsay_start;
                        call Harold41;
                        gsay_end;
                        end_dialogue;
                end
                else begin
                        start_gdialog(45, self_obj, 4, 14, 3);
                        gsay_start;
                        call Harold55;
                        gsay_end;
                        end_dialogue;
                end
        end
end
procedure destroy_p_proc
begin
        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(45, 100));
end
procedure Harold00
begin
        if (get_critter_stat(dude_obj, 34) == 0) then begin
                gsay_reply(45, 266);
        end
        else begin
                gsay_reply(45, 267);
        end
        giq_option(4, 45, 102, Harold00a, 50);
        giq_option(4, 45, 103, Harold00b, 50);
        giq_option(4, 45, 104, Harold38, 50);
        if (global_var(226) == 2) then begin
                giq_option(4, 45, 225, Harold45, 50);
        end
        giq_option(4, 45, 105, Harold37, 51);
        giq_option(-3, 45, 106, Harold01, 50);
end
procedure Harold00a
begin
        variable LVar0 := 0;
        if (item_caps_total(dude_obj) >= 25) then begin
                LVar0 := item_caps_adjust(dude_obj, -25);
                call Harold02;
        end
        else begin
                call Harold01;
        end
end
procedure Harold00b
begin
        variable LVar0 := 0;
        if (item_caps_total(dude_obj) >= 5) then begin
                LVar0 := item_caps_adjust(dude_obj, -5);
                call Harold02;
        end
        else begin
                call Harold01;
        end
end
procedure Harold01
begin
        gsay_message(45, 107, 50);
end
procedure Harold02
begin
        if (get_critter_stat(dude_obj, 34) == 0) then begin
                gsay_reply(45, 268);
        end
        else begin
                gsay_reply(45, 269);
        end
        giq_option(4, 45, 109, Harold03, 50);
        if (global_var(226) == 2) then begin
                giq_option(4, 45, 225, Harold45, 50);
        end
        giq_option(4, 45, 110, HaroldEnd, 50);
end
procedure Harold03
begin
        gsay_reply(45, 111);
        giq_option(4, 45, 112, Harold04, 50);
        giq_option(4, 45, 113, Harold36, 50);
        giq_option(4, 45, 114, HaroldEnd, 50);
end
procedure Harold04
begin
        gsay_reply(45, 115);
        giq_option(4, 45, 116, Harold05, 50);
        giq_option(4, 45, 117, Harold32, 50);
end
procedure Harold05
begin
        gsay_reply(45, 118);
        giq_option(4, 45, 119, Harold07, 50);
        giq_option(4, 45, 120, Harold06, 50);
        giq_option(4, 45, 121, Harold30, 50);
end
procedure Harold06
begin
        gsay_reply(45, 122);
        giq_option(4, 45, 123, Harold07, 50);
end
procedure Harold07
begin
        gsay_reply(45, 124);
        giq_option(4, 45, 125, Harold08, 50);
end
procedure Harold08
begin
        gsay_reply(45, 126);
        giq_option(4, 45, 127, Harold09, 50);
        giq_option(4, 45, 128, Harold10, 50);
end
procedure Harold09
begin
        gsay_reply(45, 129);
        giq_option(4, 45, 130, Harold09a, 50);
end
procedure Harold09a
begin
        gsay_reply(45, 131);
        giq_option(4, 45, 132, Harold11, 50);
end
procedure Harold10
begin
        gsay_reply(45, 133);
        giq_option(4, 45, 134, Harold11, 50);
        giq_option(4, 45, 135, Harold12, 50);
        giq_option(4, 45, 136, Harold10a, 50);
end
procedure Harold10a
begin
        gsay_message(45, 137, 50);
        call Harold11;
end
procedure Harold11
begin
        gsay_reply(45, 138);
        giq_option(4, 45, 139, Harold14, 50);
        giq_option(4, 45, 140, Harold13, 50);
end
procedure Harold12
begin
        gsay_reply(45, 141);
        giq_option(4, 45, 142, Harold11, 50);
end
procedure Harold13
begin
        gsay_reply(45, 143);
        giq_option(4, 45, 144, Harold15, 50);
        giq_option(4, 45, 145, Harold14, 50);
end
procedure Harold14
begin
        gsay_reply(45, 146);
        giq_option(4, 45, 147, Harold18, 50);
end
procedure Harold15
begin
        gsay_reply(45, 148);
        giq_option(4, 45, 149, Harold14, 50);
        giq_option(4, 45, 150, Harold15a, 50);
        giq_option(4, 45, 152, HaroldEnd, 50);
end
procedure Harold15a
begin
        variable LVar0 := 0;
        if (item_caps_total(dude_obj) >= 25) then begin
                LVar0 := item_caps_adjust(dude_obj, -25);
                set_local_var(6, 1);
                call Harold14;
        end
        else begin
                call Harold17;
        end
end
procedure Harold16
begin
        gsay_message(45, 153, 50);
        giq_option(4, 45, 154, Harold14, 50);
end
procedure Harold17
begin
        gsay_message(45, 156, 50);
        if (local_var(1) >= 3) then begin
                call Harold16;
        end
        else begin
                call Harold17a;
        end
end
procedure Harold17a
begin
        gsay_reply(45, 157);
        giq_option(4, 45, 158, HaroldEnd, 50);
        giq_option(4, 45, 159, Harold14, 50);
end
procedure Harold18
begin
        gsay_reply(45, 160);
        giq_option(4, 45, 161, Harold20, 50);
        giq_option(4, 45, 162, Harold19, 50);
end
procedure Harold19
begin
        gsay_reply(45, 163);
        giq_option(4, 45, 164, Harold21, 50);
end
procedure Harold20
begin
        gsay_reply(45, 165);
        giq_option(4, 45, 166, Harold21, 50);
end
procedure Harold21
begin
        gsay_reply(45, 167);
        giq_option(4, 45, 168, Harold22, 50);
end
procedure Harold22
begin
        gsay_reply(45, 169);
        giq_option(4, 45, 170, Harold23, 50);
        giq_option(4, 45, 171, Harold24, 50);
end
procedure Harold23
begin
        gsay_reply(45, 172);
        giq_option(4, 45, 173, Harold24, 50);
end
procedure Harold24
begin
        gsay_reply(45, 174);
        giq_option(4, 45, 175, Harold25, 50);
end
procedure Harold25
begin
        gsay_reply(45, 176);
        giq_option(4, 45, 177, Harold25a, 50);
        giq_option(4, 45, 178, Harold27, 50);
end
procedure Harold25a
begin
        gsay_reply(45, 179);
        giq_option(4, 45, 180, Harold26, 50);
end
procedure Harold26
begin
        gsay_reply(45, 181);
        giq_option(4, 45, 182, Harold28, 50);
        giq_option(4, 45, 183, Harold26a, 50);
end
procedure Harold26a
begin
        set_local_var(5, 1);
        if (local_var(6) == 1) then begin
                gsay_reply(45, 184);
                giq_option(4, 45, 185, Harold26b, 50);
        end
        else begin
                gsay_message(45, 184, 50);
        end
end
procedure Harold26b
begin
        gsay_message(45, 187, 50);
end
procedure Harold27
begin
        gsay_reply(45, 188);
        giq_option(4, 45, 189, Harold26, 50);
end
procedure Harold28
begin
        gsay_reply(45, 190);
        giq_option(4, 45, 191, Harold29, 50);
        giq_option(4, 45, 192, Harold26a, 50);
end
procedure Harold29
begin
        gsay_reply(45, 193);
        giq_option(4, 45, 194, Harold26a, 50);
end
procedure Harold30
begin
        gsay_reply(45, 195);
        giq_option(4, 45, 196, Harold31, 50);
end
procedure Harold31
begin
        gsay_reply(45, 197);
        giq_option(4, 45, 198, Harold07, 50);
end
procedure Harold32
begin
        gsay_reply(45, 199);
        giq_option(4, 45, 200, Harold11, 50);
end
procedure Harold33
begin
        gsay_reply(45, 201);
        giq_option(4, 45, 202, Harold34, 50);
        giq_option(4, 45, 203, HaroldEnd, 50);
end
procedure Harold34
begin
        gsay_reply(45, 204);
        giq_option(4, 45, 205, Harold05, 50);
end
procedure Harold36
begin
        gsay_message(45, 207, 50);
end
procedure Harold37
begin
        call BigDownReact;
        gsay_message(45, 208, 51);
end
procedure Harold38
begin
        gsay_message(45, 209, 50);
end
procedure Harold39
begin
        if (get_critter_stat(dude_obj, 34) == 0) then begin
                gsay_reply(45, 272);
        end
        else begin
                gsay_reply(45, 273);
        end
        giq_option(4, 45, 211, Harold39a, 50);
        giq_option(4, 45, 212, Harold39b, 50);
        if (global_var(226) == 2) then begin
                giq_option(4, 45, 225, Harold45, 50);
        end
        giq_option(4, 45, 213, Harold38, 50);
        giq_option(-3, 45, 214, Harold01, 50);
end
procedure Harold39a
begin
        variable LVar0 := 0;
        if (item_caps_total(dude_obj) >= 25) then begin
                LVar0 := item_caps_adjust(dude_obj, -25);
                call Harold40;
        end
        else begin
                call Harold01;
        end
end
procedure Harold39b
begin
        variable LVar0 := 0;
        if (item_caps_total(dude_obj) >= 5) then begin
                LVar0 := item_caps_adjust(dude_obj, -5);
                call Harold40;
        end
        else begin
                call Harold01;
        end
end
procedure Harold40
begin
        gsay_reply(45, 215);
        giq_option(4, 45, 216, Harold03, 50);
        giq_option(4, 45, 217, HaroldEnd, 50);
end
procedure Harold41
begin
        gsay_reply(45, 218);
        giq_option(4, 45, 219, Harold41a, 50);
        giq_option(4, 45, 220, Harold43, 50);
        giq_option(-3, 45, 221, HaroldEnd, 50);
end
procedure Harold41a
begin
        variable LVar0 := 0;
        if (item_caps_total(dude_obj) >= 20) then begin
                LVar0 := item_caps_adjust(dude_obj, -20);
                call Harold43;
        end
        else begin
                call Harold01;
        end
end
procedure Harold42
begin
        call DownReact;
        gsay_message(45, 222, 51);
end
procedure Harold43
begin
        gsay_reply(45, 223);
        if (global_var(226) == 2) then begin
                giq_option(4, 45, 225, Harold45, 50);
        end
        if (((global_var(150) - (game_time / (10 * 60 * 60 * 24))) < 10) or (global_var(109) == 1)) then begin
                giq_option(4, 45, 224, Harold43b, 50);
        end
        if (local_var(5) == 0) then begin
                giq_option(4, 45, 226, Harold43a, 50);
        end
        giq_option(4, 45, 265, HaroldEnd, 50);
end
procedure Harold43a
begin
        gsay_message(45, 228, 50);
        call Harold04;
end
procedure Harold43b
begin
        if (global_var(109) == 1) then begin
                call Harold53;
        end
        else begin
                if ((global_var(150) - (game_time / (10 * 60 * 60 * 24))) < 10) then begin
                        call Harold54;
                end
        end
end
procedure Harold44
begin
        gsay_message(45, 229, 50);
end
procedure Harold45
begin
        set_global_var(226, 3);
        gsay_reply(45, 230);
        giq_option(4, 45, 231, Harold47, 50);
        giq_option(4, 45, 232, Harold47, 50);
end
procedure Harold47
begin
        gsay_reply(45, 233);
        giq_option(4, 45, 234, Harold49, 50);
end
procedure Harold49
begin
        gsay_reply(45, 235);
        giq_option(4, 45, 236, Harold50, 50);
end
procedure Harold50
begin
        gsay_reply(45, 237);
        giq_option(4, 45, 238, Harold51, 50);
end
procedure Harold51
begin
        gsay_reply(45, 239);
        giq_option(4, 45, 240, HaroldEnd, 50);
end
procedure Harold52
begin
        gsay_message(45, 241, 50);
end
procedure Harold53
begin
        set_global_var(219, 1);
        gsay_reply(45, 242);
        giq_option(4, 45, 243, HaroldEnd, 50);
end
procedure Harold54
begin
        gsay_reply(45, 244);
        giq_option(4, 45, 245, HaroldEnd, 50);
end
procedure Harold55
begin
        gsay_reply(45, 246);
        giq_option(4, 45, 247, Harold56, 50);
        giq_option(4, 45, 248, Harold57, 50);
end
procedure Harold56
begin
        gsay_message(45, 249, 51);
end
procedure Harold57
begin
        gsay_message(45, 250, 51);
end
procedure HaroldEnd
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

Advertisement