Fallout Wiki
Advertisement
Fallout Wiki
Details
Type Decompiled script
SCRIPTS.LST comment Cabbot
MSG file CABBOT.MSG
Transcript

procedure start;
procedure do_dialogue;
procedure cabbot01;
procedure cabbot02;
procedure cabbot04;
procedure cabbot05;
procedure cabbot05a;
procedure cabbot06;
procedure cabbot07;
procedure cabbot09;
procedure cabbot10;
procedure cabbot12;
procedure cabbot16;
procedure cabbot17;
procedure cabbot18;
procedure cabbot19;
procedure cabbot20;
procedure cabbot21;
procedure cabbot21_1;
procedure cabbot22;
procedure cabbot23;
procedure cabbot24;
procedure cabbot25;
procedure cabbot27;
procedure cabbot28;
procedure cabbot31;
procedure cabbot32;
procedure cabbot33;
procedure cabbot34;
procedure cabbot35;
procedure cabbot36;
procedure cabbot37;
procedure cabbot38;
procedure cabbot39;
procedure cabbot40;
procedure cabbot41;
procedure cabbot42;
procedure cabbot43;
procedure cabbot44;
procedure cabbot45;
procedure cabbot46;
procedure cabbot47;
procedure cabbot48;
procedure cabbot06a;
procedure cabbot07a;
procedure cabbot16a;
procedure cabbot19a;
procedure cabbot23a;
procedure cabbot33a;
procedure cabbotx;
procedure cabbotx1;
procedure cabbotx3;
procedure cabbotx6;
procedure cabbotx7;
procedure cabbotx8;
procedure cabbot35a;
procedure cabbot49;
procedure cabbot50;
procedure cabbot51;
procedure cabbot52;
procedure cabbot53;
procedure cabbot54;
procedure cabbot55;
procedure cabbot56;
procedure cabbot57;
procedure cabbot58;
procedure cabbot59;
procedure cabbot60;
procedure cabbot61;
procedure cabbot62;
procedure cabbot63;
procedure cabbot64;
procedure cabbot65;
procedure cabbot66;
procedure cabbot67;
procedure cabbot68;
procedure cabbot69;
procedure cabbotend;
procedure cabbotopen;
procedure combat;
procedure damage_p_proc;
procedure critter_p_proc;
procedure pickup_p_proc;
procedure talk_p_proc;
procedure destroy_p_proc;
procedure look_at_p_proc;
procedure time_p_proc;
import variable Door_ptr;
import variable Cabbot_Ptr;
variable VATS;
variable MALE;
variable SEXY;
variable HOSTILE;
variable ILLEGAL;
variable Only_Once := 1;
variable awardex;
variable temp;
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;
                Cabbot_Ptr := self_obj;
                critter_add_trait(self_obj, 1, 6, 44);
                critter_add_trait(self_obj, 1, 5, 64);
        end
        if (script_action == 21) then begin
                call look_at_p_proc;
        end
        else begin
                if (script_action == 14) then begin
                        call damage_p_proc;
                end
                else begin
                        if (script_action == 4) then begin
                                call pickup_p_proc;
                        end
                        else begin
                                if (script_action == 22) then begin
                                        call time_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
        end
end
procedure do_dialogue
begin
        call get_reaction;
        start_gdialog(40, self_obj, 4, 16, 5);
        gsay_start;
        if (local_var(4) == 1) then begin
                if (global_var(108) == 1) then begin
                        call cabbot24;
                end
                else begin
                        if (global_var(108) == 2) then begin
                                call cabbot36;
                        end
                        else begin
                                if (global_var(117 == 1)) then begin
                                        call cabbot33;
                                end
                                else begin
                                        if (local_var(0) >= 50) then begin
                                                call cabbot19;
                                        end
                                        else begin
                                                call cabbot21;
                                        end
                                end
                        end
                end
        end
        else begin
                call cabbot01;
        end
        gsay_end;
        end_dialogue;
        if (awardex) then begin
                awardex := 0;
                display_msg(message_str(40, 232));
                set_global_var(155, global_var(155) + 1);
                give_exp_points(2000);
        end
end
procedure cabbot01
begin
        set_local_var(4, 1);
        gsay_reply(40, 101);
        giq_option(4, 40, 103, cabbot17, 50);
        giq_option(4, 40, 105, cabbot04, 50);
        giq_option(4, 40, 106, cabbot12, 50);
        giq_option(4, 40, 107, cabbot10, 50);
        giq_option(4, 40, 102, cabbot02, 50);
        giq_option(-3, 40, 104, cabbot46, 50);
end
procedure cabbot02
begin
        gsay_reply(40, 108);
        giq_option(5, 40, 109, cabbot17, 50);
        giq_option(4, 40, 110, cabbot16, 50);
        giq_option(5, 40, 111, cabbot04, 50);
        giq_option(4, 40, 112, cabbot12, 50);
        giq_option(4, 40, 113, cabbot10, 50);
end
procedure cabbot04
begin
        gsay_message(40, 114, 50);
        set_local_var(6, 1);
        gfade_out(600);
        game_time_advance(game_ticks(600));
        gfade_in(600);
        call cabbot05;
end
procedure cabbot05
begin
        gsay_reply(40, 115);
        giq_option(4, 40, 116, cabbot06, 50);
        giq_option(4, 40, 117, cabbot10, 50);
        giq_option(6, 40, 118, cabbot05a, 50);
end
procedure cabbot05a
begin
        gsay_reply(40, 119);
        giq_option(4, 40, 120, cabbot06, 50);
        giq_option(6, 40, 121, cabbot17, 50);
        giq_option(4, 40, 122, cabbot10, 50);
end
procedure cabbot06
begin
        gsay_reply(40, 123);
        if (not(global_var(76))) then begin
                set_global_var(76, 1);
        end
        giq_option(7, 40, 124, cabbot07, 50);
        giq_option(4, 40, 125, cabbot09, 50);
        giq_option(4, 40, 126, cabbot06a, 51);
end
procedure cabbot07
begin
        gsay_reply(40, 127);
        giq_option(4, 40, 128, cabbot09, 50);
        giq_option(4, 40, 129, cabbot07a, 51);
end
procedure cabbot09
begin
        gsay_message(40, 130, 49);
        set_global_var(108, 1);
        call UpReactLevel;
        call cabbotx;
end
procedure cabbot10
begin
        gsay_message(40, 131, 50);
end
procedure cabbot12
begin
        gsay_reply(40, 132);
        giq_option(5, 40, 133, cabbot04, 50);
        giq_option(4, 40, 134, cabbot10, 50);
        giq_option(5, 40, 135, cabbot17, 50);
end
procedure cabbot16
begin
        gsay_reply(40, 136);
        giq_option(5, 40, 137, cabbot17, 50);
        giq_option(5, 40, 138, cabbot04, 50);
        giq_option(4, 40, 139, cabbot16a, 51);
        giq_option(4, 40, 140, cabbot10, 50);
end
procedure cabbot17
begin
        gsay_message(40, 141, 51);
        call cabbotx;
end
procedure cabbot18
begin
        gsay_message(40, 142, 51);
        call cabbotx;
end
procedure cabbot19
begin
        if (local_var(1) >= 3) then begin
                gsay_reply(40, 143);
        end
        else begin
                gsay_reply(40, 144);
        end
        giq_option(5, 40, 145, cabbot05, 50);
        giq_option(5, 40, 146, cabbot17, 50);
        giq_option(4, 40, 147, cabbot19a, 51);
        giq_option(-3, 40, 104, cabbot46, 50);
end
procedure cabbot20
begin
        gsay_message(40, 148, 50);
        call cabbotx;
end
procedure cabbot21
begin
        gsay_reply(40, 149);
        giq_option(5, 40, 150, cabbot21_1, 50);
        giq_option(4, 40, 151, cabbotx, 50);
end
procedure cabbot21_1
begin
        if (get_critter_stat(dude_obj, 34) == 0) then begin
                if (is_success(roll_vs_skill(dude_obj, 14, 0))) then begin
                        call cabbot23;
                end
                else begin
                        call cabbot22;
                end
        end
        else begin
                call cabbot23;
        end
end
procedure cabbot22
begin
        gsay_message(40, 152, 50);
        call cabbotx;
end
procedure cabbot23
begin
        if (local_var(1) < 2) then begin
                set_local_var(1, 2);
                call LevelToReact;
        end
        gsay_reply(40, 153);
        giq_option(5, 40, 154, cabbot05, 50);
        giq_option(5, 40, 155, cabbot17, 50);
        giq_option(4, 40, 156, cabbot23a, 51);
end
procedure cabbot24
begin
        gsay_reply(40, 157);
        giq_option(4, 40, 158, cabbot25, 50);
        giq_option(4, 40, 159, cabbot32, 50);
end
procedure cabbot25
begin
        gsay_reply(40, 160);
        giq_option(4, 40, 161, cabbotx3, 50);
        giq_option(4, 40, 162, cabbot32, 50);
end
procedure cabbot27
begin
        gsay_reply(40, 163);
        giq_option(4, 40, 164, cabbotopen, 50);
end
procedure cabbot28
begin
        gsay_reply(40, 165);
        giq_option(4, 40, 166, cabbot31, 50);
end
procedure cabbot31
begin
        gsay_message(40, 168, 50);
        call cabbotx;
end
procedure cabbot32
begin
        gsay_message(40, 169, 50);
        call cabbotx;
end
procedure cabbot33
begin
        if (local_var(1) >= 3) then begin
                gsay_reply(40, 170);
        end
        else begin
                if (local_var(1) <= 1) then begin
                        gsay_reply(40, 171);
                end
                else begin
                        gsay_reply(40, 172);
                end
        end
        giq_option(4, 40, 173, cabbot34, 50);
        giq_option(4, 40, 174, cabbot33a, 51);
end
procedure cabbot34
begin
        if (local_var(1) >= 3) then begin
                gsay_message(40, 175, 49);
        end
        else begin
                if (local_var(1) <= 1) then begin
                        gsay_message(40, 176, 51);
                end
                else begin
                        gsay_message(40, 177, 50);
                end
        end
        call cabbotx6;
end
procedure cabbot35
begin
        giq_option(5, 40, 178, cabbot38, 50);
        giq_option(5, 40, 179, cabbot42, 50);
        giq_option(4, 40, 180, cabbot37, 50);
end
procedure cabbot36
begin
        if (local_var(1) >= 3) then begin
                gsay_reply(40, 182);
        end
        else begin
                if (local_var(1) <= 1) then begin
                        gsay_reply(40, 183);
                end
                else begin
                        gsay_reply(40, 184);
                end
        end
        giq_option(5, 40, 185, cabbot35a, 50);
        giq_option(4, 40, 186, cabbot37, 50);
end
procedure cabbot37
begin
        gsay_message(40, 187, 50);
        call cabbotx7;
end
procedure cabbot38
begin
        gsay_reply(40, 188);
        giq_option(5, 40, 189, cabbot39, 50);
        giq_option(5, 40, 190, cabbot40, 50);
end
procedure cabbot39
begin
        gsay_reply(40, 191);
        giq_option(5, 40, 192, cabbot35a, 50);
        giq_option(4, 40, 193, cabbot37, 50);
end
procedure cabbot40
begin
        gsay_reply(40, 194);
        giq_option(6, 40, 195, cabbot41, 50);
        giq_option(5, 40, 196, cabbot35a, 50);
        giq_option(4, 40, 197, cabbot37, 50);
end
procedure cabbot41
begin
        gsay_reply(40, 198);
        giq_option(4, 40, 199, cabbot35a, 50);
        giq_option(4, 40, 200, cabbot37, 50);
end
procedure cabbot42
begin
        gsay_reply(40, 201);
        giq_option(4, 40, 202, cabbot39, 50);
        giq_option(5, 40, 203, cabbot35a, 50);
        giq_option(4, 40, 204, cabbot37, 50);
end
procedure cabbot43
begin
        call DownReactLevel;
        ILLEGAL := 1;
        float_msg(self_obj, message_str(40, 205), 2);
end
procedure cabbot44
begin
        call DownReactLevel;
        ILLEGAL := 1;
        float_msg(self_obj, message_str(40, 206), 2);
        call cabbotx8;
end
procedure cabbot45
begin
        call DownReactLevel;
        ILLEGAL := 1;
        float_msg(self_obj, message_str(40, 207), 2);
end
procedure cabbot46
begin
        gsay_message(40, 208, 50);
        call cabbotx;
end
procedure cabbot47
begin
        gsay_message(40, 209, 50);
end
procedure cabbot48
begin
        gsay_message(40, 210, 50);
end
procedure cabbot06a
begin
        call DownReactLevel;
        call cabbot10;
end
procedure cabbot07a
begin
        call DownReactLevel;
        call LevelToReact;
        call cabbot10;
end
procedure cabbot16a
begin
        call BottomReact;
        call cabbot18;
end
procedure cabbot19a
begin
        call DownReactLevel;
        call LevelToReact;
        call cabbot20;
end
procedure cabbot23a
begin
        call DownReactLevel;
        call cabbot20;
end
procedure cabbot33a
begin
        call DownReactLevel;
        call cabbot34;
end
procedure cabbotx
begin
end
procedure cabbotx1
begin
        call cabbot05;
end
procedure cabbotx3
begin
        variable LVar0 := 0;
        if (obj_is_carrying_obj_pid(dude_obj, 164)) then begin
                awardex := 1;
                LVar0 := obj_carrying_pid_obj(dude_obj, 164);
                set_global_var(108, 2);
                call TopReact;
                rm_obj_from_inven(dude_obj, LVar0);
                call cabbot27;
        end
        else begin
                call cabbot31;
        end
end
procedure cabbotx6
begin
end
procedure cabbotx7
begin
end
procedure cabbotx8
begin
end
procedure cabbot35a
begin
        gsay_message(40, 181, 50);
        call cabbot35;
end
procedure cabbot49
begin
        gsay_message(40, 211, 50);
end
procedure cabbot50
begin
        gsay_message(40, 212, 50);
end
procedure cabbot51
begin
        gsay_message(40, 213, 50);
end
procedure cabbot52
begin
        gsay_message(40, 214, 50);
end
procedure cabbot53
begin
        gsay_message(40, 215, 50);
end
procedure cabbot54
begin
        gsay_message(40, 216, 50);
end
procedure cabbot55
begin
        gsay_message(40, 217, 50);
end
procedure cabbot56
begin
        gsay_message(40, 218, 50);
end
procedure cabbot57
begin
        gsay_message(40, 219, 50);
end
procedure cabbot58
begin
        gsay_message(40, 220, 50);
end
procedure cabbot59
begin
        gsay_message(40, 221, 50);
end
procedure cabbot60
begin
        gsay_message(40, 222, 50);
end
procedure cabbot61
begin
        gsay_message(40, 223, 50);
end
procedure cabbot62
begin
        gsay_message(40, 224, 50);
end
procedure cabbot63
begin
        gsay_message(40, 225, 50);
end
procedure cabbot64
begin
        gsay_message(40, 226, 50);
end
procedure cabbot65
begin
        gsay_message(40, 227, 50);
end
procedure cabbot66
begin
        gsay_message(40, 228, 50);
end
procedure cabbot67
begin
        gsay_message(40, 229, 50);
end
procedure cabbot68
begin
        gsay_message(40, 230, 50);
end
procedure cabbot69
begin
        gsay_message(40, 231, 50);
end
procedure cabbotend
begin
end
procedure cabbotopen
begin
end
procedure combat
begin
        HOSTILE := 1;
end
procedure damage_p_proc
begin
        set_global_var(250, 1);
end
procedure critter_p_proc
begin
        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
        else begin
                if (local_var(5) == 0) then begin
                        if (global_var(108) == 2) then begin
                                add_timer_event(self_obj, game_ticks(1), 1);
                        end
                end
                else begin
                        if (local_var(5) == 1) then begin
                                if (tile_num(self_obj) == 20906) then begin
                                        set_local_var(5, 2);
                                end
                                else begin
                                        animate_move_obj_to_tile(self_obj, 20906, 0);
                                end
                        end
                end
        end
end
procedure pickup_p_proc
begin
        if (source_obj == dude_obj) then begin
                HOSTILE := 1;
        end
end
procedure talk_p_proc
begin
        if (global_var(108) == 5) then begin
                float_msg(self_obj, message_str(40, 233), 2);
        end
        else begin
                call do_dialogue;
        end
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(40, 100));
end
procedure time_p_proc
begin
        set_local_var(5, 1);
        use_obj(Door_ptr);
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