Fallout Wiki
Fallout Wiki
Details
Type Decompiled script
SCRIPTS.LST comment Jason from Adytum.
MSG file JASON.MSG

procedure start;
procedure critter_p_proc;
procedure destroy_p_proc;
procedure look_at_p_proc;
procedure talk_p_proc;
procedure Jason01;
procedure Jason02;
procedure Jason03;
procedure Jason04;
procedure Jason05;
procedure Jason06;
procedure Jason07;
procedure Jason08;
procedure Jason09;
procedure Jason10;
procedure Jason11;
procedure Jason12;
procedure Jason13;
procedure Jason14;
procedure Jason15;
procedure Jason16;
procedure Jason17;
procedure Jason18;
procedure Jason19;
procedure Jason20;
procedure Jason21;
procedure Jason22;
procedure Jason23;
procedure follow_player;
variable following;
variable initialized;
procedure start
begin
        if (not(initialized)) then begin
                critter_add_trait(self_obj, 1, 6, 49);
                initialized := 1;
        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
                        else begin
                                if (script_action == 21) then begin
                                        call look_at_p_proc;
                                end
                                else begin
                                        if (script_action == 11) then begin
                                                call talk_p_proc;
                                        end
                                end
                        end
                end
        end
end
procedure critter_p_proc
begin
        if (following) then begin
                call follow_player;
        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;
        if (not(local_var(1))) then begin
                display_msg(message_str(382, 101));
        end
        else begin
                display_msg(message_str(382, 100));
        end
end
procedure talk_p_proc
begin
        start_gdialog(382, self_obj, 4, -1, -1);
        gsay_start;
        if (cur_map_index == 45) then begin
                if (following) then begin
                        call Jason23;
                end
                else begin
                        call Jason19;
                end
        end
        if (local_var(0)) then begin
                call Jason18;
        end
        else begin
                if (local_var(1)) then begin
                        call Jason16;
                end
                else begin
                        call Jason01;
                end
        end
        gsay_end;
        end_dialogue;
end
procedure Jason01
begin
        gsay_reply(382, 102);
        giq_option(4, 382, 103, Jason05, 50);
        giq_option(4, 382, 104, Jason13, 50);
        giq_option(4, 382, 105, Jason08, 50);
        giq_option(4, 382, 106, Jason07, 50);
        giq_option(-3, 382, 107, Jason02, 50);
end
procedure Jason02
begin
        gsay_message(382, 108, 50);
end
procedure Jason03
begin
        gsay_message(382, 109, 50);
        gsay_message(382, 110, 50);
end
procedure Jason04
begin
        gsay_message(382, 111, 50);
        gsay_message(382, 112, 50);
end
procedure Jason05
begin
        gsay_reply(382, 113);
        giq_option(4, 382, 114, Jason06, 50);
        giq_option(4, 382, 115, Jason14, 50);
end
procedure Jason06
begin
        gsay_reply(382, 116);
        giq_option(4, 382, 117, Jason07, 50);
        giq_option(4, 382, 118, Jason08, 50);
        giq_option(6, 382, 119, Jason15, 50);
end
procedure Jason07
begin
        gsay_reply(382, 120);
        giq_option(4, 382, 121, Jason12, 50);
        giq_option(4, 382, 122, Jason08, 50);
end
procedure Jason08
begin
        gsay_reply(382, 123);
        giq_option(4, 382, 124, Jason12, 50);
end
procedure Jason09
begin
        gsay_reply(382, 125);
        giq_option(4, 382, 126, Jason10, 50);
        giq_option(4, 382, 127, Jason11, 50);
end
procedure Jason10
begin
        gsay_message(382, 128, 50);
end
procedure Jason11
begin
        gsay_message(382, 129, 50);
end
procedure Jason12
begin
        gsay_message(382, 130, 50);
end
procedure Jason13
begin
        gsay_message(382, 131, 50);
        set_local_var(0, 1);
end
procedure Jason14
begin
        gsay_message(382, 132, 50);
        call Jason10;
end
procedure Jason15
begin
        gsay_message(382, 133, 50);
        call Jason11;
end
procedure Jason16
begin
        gsay_reply(382, 134);
        giq_option(4, 382, 135, Jason08, 50);
        giq_option(4, 382, 136, Jason17, 50);
end
procedure Jason17
begin
        gsay_message(382, 137, 50);
end
procedure Jason18
begin
        gsay_message(382, 138, 50);
end
procedure Jason19
begin
        gsay_reply(382, 139);
        giq_option(-3, 382, 140, Jason20, 50);
        giq_option(4, 382, 141, Jason20, 50);
        giq_option(4, 382, 142, Jason21, 50);
        giq_option(4, 382, 143, Jason22, 50);
end
procedure Jason20
begin
        gsay_message(382, 144, 50);
        critter_add_trait(self_obj, 1, 6, 0);
        following := 1;
end
procedure Jason21
begin
        gsay_message(382, 145, 50);
end
procedure Jason22
begin
        gsay_reply(382, 146);
        giq_option(4, 382, 147, Jason20, 50);
        giq_option(4, 382, 148, Jason21, 50);
end
procedure Jason23
begin
        gsay_message(382, 149, 50);
end
procedure follow_player
begin
        if (tile_distance_objs(self_obj, dude_obj) > 7) then begin
                animate_move_obj_to_tile(self_obj, tile_num(dude_obj), 1);
        end
        else begin
                if (tile_distance_objs(self_obj, dude_obj) > 3) then begin
                        animate_move_obj_to_tile(self_obj, tile_num(dude_obj), 0);
                end
                else begin
                        animate_move_obj_to_tile(self_obj, tile_num(self_obj), 0);
                end
        end
end