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