Nice script, good idea, only one thing:
this code
procedure talk_p_proc begin
start_gdialog(NAME,self_obj,4,-1,-1);
gSay_Start;
if (local_var(LVAR_Q1) == 0) then begin
call Node001;
end else
if (local_var(LVAR_Q1) >= 1) then begin
call Node002;
end else begin
call Node002;
end...