procedure start;
procedure damage_p_proc;
procedure destroy_p_proc;
procedure look_at_p_proc;
procedure talk_p_proc;
procedure critter_p_proc;
procedure pickup_p_proc;
procedure Chuck01;
procedure Chuck02;
procedure Chuck03;
procedure Chuck04;
procedure Chuck05;
procedure Chuck06;
procedure Chuck07;
procedure Chuck08;
procedure Chuck09;
procedure Chuck10;
procedure Chuck11;
procedure Chuck12;
procedure Chuck13;
procedure Chuck14;
procedure Chuck15;
procedure Chuck16;
procedure Chuck17;
procedure Chuck18;
procedure Chuck19;
procedure Chuck20;
procedure Chuck21;
procedure Chuck22;
procedure Chuck23;
procedure ChuckCards;
procedure ChuckCards2;
procedure ChuckBye;
procedure ChuckEnd;
variable initialized;
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
variable LVar0 := 0;
if (not(initialized)) then begin
if (obj_is_carrying_obj_pid(self_obj, 41) == 0) then begin
LVar0 := create_object_sid(41, 0, 0, -1);
add_mult_objs_to_inven(self_obj, LVar0, random(0, 20));
if ((global_var(613) == 9103) or (global_var(613) == 9102)) then begin
critter_add_trait(self_obj, 1, 6, 0);
end
else begin
critter_add_trait(self_obj, 1, 6, 49);
end
end
initialized := 1;
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
procedure damage_p_proc
begin
if (source_obj == dude_obj) then begin
set_global_var(251, 1);
critter_add_trait(self_obj, 1, 6, 49);
end
end
procedure destroy_p_proc
begin
if (source_obj == dude_obj) then begin
set_global_var(251, 1);
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
critter_add_trait(self_obj, 1, 6, 49);
end
end
procedure look_at_p_proc
begin
script_overrides;
if (local_var(4)) then begin
display_msg(message_str(664, 101));
end
else begin
display_msg(message_str(664, 100));
end
end
procedure talk_p_proc
begin
call get_reaction;
start_gdialog(664, self_obj, 4, -1, -1);
gsay_start;
if (local_var(4)) then begin
call Chuck22;
end
else begin
call Chuck01;
end
gsay_end;
end_dialogue;
end
procedure critter_p_proc
begin
if (obj_can_see_obj(self_obj, dude_obj)) then begin
if (global_var(251) == 1) then begin
attack_complex(dude_obj, 0, 1, 0, 0, 30000, 0, 0);
end
end
end
procedure pickup_p_proc
begin
set_global_var(251, 1);
end
procedure Chuck01
begin
set_local_var(4, 1);
gsay_reply(664, 102);
giq_option(-3, 664, 103, Chuck02, 50);
giq_option(4, 664, 104, Chuck03, 50);
giq_option(4, 664, 105, Chuck04, 50);
giq_option(6, 664, 106, Chuck05, 50);
end
procedure Chuck02
begin
gsay_message(664, 107, 50);
end
procedure Chuck03
begin
gsay_reply(664, 108);
giq_option(4, 664, 109, Chuck09, 50);
giq_option(4, 664, 110, Chuck14, 50);
giq_option(6, 664, 111, Chuck15, 49);
end
procedure Chuck04
begin
gsay_reply(664, 112);
giq_option(4, 664, 113, Chuck14, 50);
giq_option(4, 664, 114, Chuck18, 50);
giq_option(4, 664, 115, ChuckBye, 50);
end
procedure Chuck05
begin
gsay_reply(664, 117);
giq_option(4, 664, 118, ChuckBye, 50);
giq_option(4, 664, 119, ChuckCards, 50);
end
procedure Chuck06
begin
call DownReact;
gsay_reply(664, 128);
giq_option(4, 664, 129, Chuck07, 51);
giq_option(4, 664, 130, Chuck08, 50);
end
procedure Chuck07
begin
call DownReact;
set_local_var(5, 4);
gsay_message(664, 131, 51);
end
procedure Chuck08
begin
call UpReact;
gsay_message(664, 132, 50);
end
procedure Chuck09
begin
gsay_reply(664, 133);
giq_option(4, 664, 134, ChuckBye, 50);
giq_option(4, 664, 135, Chuck10, 50);
giq_option(6, 664, 136, Chuck19, 50);
end
procedure Chuck10
begin
gsay_reply(664, 137);
giq_option(4, 664, 138, ChuckBye, 50);
giq_option(4, 664, 139, Chuck11, 50);
end
procedure Chuck11
begin
gsay_reply(664, 140);
giq_option(4, 664, 134, ChuckBye, 50);
giq_option(4, 664, 141, Chuck12, 51);
giq_option(4, 664, 142, Chuck13, 50);
end
procedure Chuck12
begin
gsay_reply(664, 143);
giq_option(4, 664, 144, Chuck07, 51);
giq_option(5, 664, 145, UpReact, 50);
giq_option(4, 664, 146, ChuckBye, 50);
end
procedure Chuck13
begin
gsay_reply(664, 147);
giq_option(4, 664, 148, ChuckCards, 49);
giq_option(4, 664, 144, Chuck07, 51);
end
procedure Chuck14
begin
gsay_reply(664, 149);
giq_option(4, 664, 150, ChuckEnd, 50);
giq_option(4, 664, 151, Chuck10, 50);
end
procedure Chuck15
begin
gsay_reply(664, 152);
giq_option(4, 664, 153, ChuckBye, 50);
giq_option(4, 664, 150, ChuckEnd, 50);
giq_option(6, 664, 154, Chuck16, 50);
end
procedure Chuck16
begin
gsay_reply(664, 155);
giq_option(4, 664, 156, ChuckBye, 50);
giq_option(6, 664, 157, Chuck17, 50);
end
procedure Chuck17
begin
gsay_reply(664, 158);
giq_option(4, 664, 159, ChuckBye, 50);
giq_option(4, 664, 150, DownReact, 51);
end
procedure Chuck18
begin
set_local_var(6, 1);
gsay_reply(664, 160);
giq_option(4, 664, 146, ChuckBye, 50);
giq_option(4, 664, 161, ChuckCards, 50);
end
procedure Chuck19
begin
gsay_reply(664, 162);
giq_option(4, 664, 146, ChuckBye, 50);
giq_option(6, 664, 163, Chuck20, 50);
giq_option(6, 664, 164, Chuck21, 50);
end
procedure Chuck20
begin
gsay_reply(664, 165);
giq_option(4, 664, 146, ChuckBye, 50);
giq_option(6, 664, 164, Chuck21, 50);
end
procedure Chuck21
begin
gsay_reply(664, 166);
giq_option(0, 664, 125, ChuckBye, 50);
end
procedure Chuck22
begin
gsay_reply(664, random(167, 169));
giq_option(-3, 664, 103, Chuck02, 50);
giq_option(4, 664, 170, Chuck23, 50);
if (local_var(5) < 4) then begin
giq_option(4, 664, 171, ChuckCards, 50);
end
if (local_var(6) == 0) then begin
giq_option(4, 664, 172, Chuck18, 50);
end
end
procedure Chuck23
begin
gsay_reply(664, 173);
giq_option(0, 664, 125, ChuckBye, 50);
end
procedure ChuckCards
begin
gsay_reply(664, 120);
giq_option(0, 664, 125, ChuckCards2, 50);
end
procedure ChuckCards2
begin
if (local_var(5) == 0) then begin
if (global_var(74) < 1) then begin
gsay_reply(664, 121);
end
else begin
set_local_var(5, 1);
end
end
if (local_var(5) == 1) then begin
if (global_var(78) < 1) then begin
gsay_reply(664, 122);
end
else begin
set_local_var(5, 2);
end
end
if (local_var(5) == 2) then begin
if (global_var(79) < 1) then begin
gsay_reply(664, 123);
end
else begin
set_local_var(5, 3);
end
end
if (local_var(5) >= 3) then begin
gsay_reply(664, 124);
set_critter_stat(dude_obj, 6, 1);
end
set_local_var(5, local_var(5) + 1);
giq_option(4, 664, 126, ChuckBye, 50);
giq_option(4, 664, 127, Chuck06, 50);
end
procedure ChuckBye
begin
gsay_message(664, 116, 50);
end
procedure ChuckEnd
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