This is a sub-page of Ultima Underworld: The Stygian Abyss (DOS)/Conversations.
// cnvdasm - ultima underworld conversation script disassembler / decompiler
//
// loading game strings
//
// conversation #115
// string block 0x0e73 (3699), name
//
// 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_0293();
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_goal = 6;
func_0012();
} // end func
void func_0072() {
npc_goal = 1;
func_0012();
} // end func
void func_0081() {
npc_gtarg = 1;
npc_goal = 5;
npc_attitude = 1;
func_0012();
} // end func
void func_009a() {
npc_attitude = 6;
} // end func
void func_00a7() {
npc_attitude = param1[0]play_hunger;
func_0012();
} // end func
void func_00b8() {
npc_attitude = 2;
func_0012();
} // end func
void func_00c7() {
npc_attitude = 1;
func_0012();
} // end func
void func_00d6() {
func_0012();
} // end func
void func_00e0() {
param1[1] = game_days;
param1[2] = game_mins;
} // end func
void func_00fc() {
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_0185() {
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_0239() {
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_0293() {
int locals[22];
say( "" );
locals[1] = 2; // ""
locals[2] = 3; // ""
locals[3] = 0; // ""
locals[22] = babl_menu( 0, &locals[1] );
switch ( locals[22] ) {
case 1:
func_02db();
break;
case 2:
func_00d6();
break;
} // end switch
} // end func
void func_02db() {
say( "" );
func_00d6();
} // end func
void func_02e8() {
int locals[44];
setup_to_barter( 0 );
while ( !private[1] ) {
locals[1] = 5; // ""
locals[2] = 6; // ""
locals[3] = 7; // ""
locals[4] = 8; // ""
locals[5] = 0; // ""
locals[22] = babl_menu( 0, &locals[1] );
switch ( locals[22] ) {
case 1:
func_0399();
break;
case 2:
func_03ea();
break;
case 3:
do_judgement( 0 );
break;
case 4:
do_decline( 0 );
private[1] = 1;
break;
} // end switch
} // while
locals[23] = 9; // ""
locals[24] = 0; // ""
locals[44] = babl_menu( 0, &locals[23] );
if ( locals[44] == 1 ) {
private[1] = 1;
} // end if
} // end func
void func_0399() {
int locals[14];
locals[0] = -1;
locals[6] = -1;
locals[11] = 10; // ""
locals[12] = 11; // ""
locals[13] = 12; // ""
locals[14] = 13; // ""
if ( do_offer( 6, &locals[14], &locals[13], &locals[12], &locals[11], &locals[6], &locals[1] ) ) {
private[1] = 1;
} // end if
} // end func
void func_03ea() {
int locals[24];
say( "" );
locals[1] = 15; // ""
locals[2] = 16; // ""
locals[3] = 0; // ""
locals[22] = babl_menu( 0, &locals[1] );
switch ( locals[22] ) {
case 1:
break;
case 2:
return;
break;
} // end switch
locals[23] = 17; // ""
locals[24] = 18; // ""
if ( do_demand( 2, &locals[24], &locals[23] ) ) {
private[1] = 1;
} else {
func_0081();
} // end if
} // end func