This is a sub-page of Ultima Underworld: The Stygian Abyss (DOS)/Conversations.
// cnvdasm - ultima underworld conversation script disassembler / decompiler
//
// loading game strings
//
// conversation #297
// string block 0x0f29 (3881), critter #41, dark ghoul
//
// converting to graph
// searching functions
// replacing expression opcodes
// folding expressions
// adding control structures
// fixing up functions
extern int private[31];
void main() {
private[1] = 0;
func_029d();
func_0012();
} // end func
void func_0012() {
private[0] = 1;
} // end func
void func_0020() {
int locals[1];
if ( (((npc_goal == 5 || npc_goal == 6) || npc_goal == 9) && npc_gtarg == 1 || npc_attitude == 0) ) {
locals[1] = 0;
} else {
locals[1] = 1;
} // end if
return locals[1];
} // end func
void func_0063() {
npc_gtarg = 1;
npc_attitude = 1;
npc_goal = 6;
func_0012();
} // end func
void func_007c() {
npc_goal = 1;
func_0012();
} // end func
void func_008b() {
npc_gtarg = 1;
npc_goal = 5;
npc_attitude = 1;
func_0012();
} // end func
void func_00a4() {
npc_attitude = 6;
} // end func
void func_00b1() {
npc_attitude = param1[0]play_hunger;
func_0012();
} // end func
void func_00c2() {
npc_attitude = 2;
func_0012();
} // end func
void func_00d1() {
npc_attitude = 1;
func_0012();
} // end func
void func_00e0() {
func_0012();
} // end func
void func_00ea() {
param1[1] = game_days;
param1[2] = game_mins;
} // end func
void func_0106() {
int locals[4];
locals[2] = game_days - param2[1];
locals[3] = game_mins - param2[2];
if ( locals[3] < 0 ) {
locals[3] = locals[3] + 1440;
locals[2] = locals[2] - 1;
} // end if
if ( locals[2] >= param1[1] && locals[3] >= param1[2] ) {
locals[1] = 1;
} else {
locals[1] = 0;
} // end if
return locals[1];
} // end func
void func_018f() {
param1[1] = game_days - param3[1];
param1[2] = game_mins - param3[2];
if ( param1[2] < 0 ) {
param1[2] = param1[2] + 1440;
param1[1] = param1[1] - 1;
} // end if
param1[1] = param2[1] - param1[1];
param1[2] = param2[2] - param1[2];
if ( param1[2] < 0 ) {
param1[2] = param1[2] + 1440;
param1[1] = param1[1] - 1;
} // end if
} // end func
void func_0243() {
param1[1] = game_days - param2[1];
param1[2] = game_mins - param2[2];
if ( param1[2] < 0 ) {
param1[2] = param1[2] + 1440;
param1[1] = param1[1] - 1;
} // end if
} // end func
void func_029d() {
int locals[22];
say( "Human! We no see one like you here very much, and when we do, is not for long. Heh heh." );
locals[1] = 2; // "I do not like the tone of thy voice."
locals[2] = 3; // "It is a pleasure to meet thee."
locals[3] = 4; // "I must be on my way."
locals[4] = 0; // ""
locals[22] = babl_menu( 0, &locals[1] );
switch ( locals[22] ) {
case 1:
goto label_02f6]];
break;
case 2:
goto label_02fb]];
break;
case 3:
goto label_0300]];
break;
} // end switch
label_02f6:;
say( "Ho, ho! Well, you not need to listen to it for long." );
func_008b();
label_02fb:;
say( "Pleasure to meet, yes, but more pleasure to eat!" );
func_008b();
label_0300:;
say( "Yes, on way to my stomach!" );
func_008b();
} // end func