the cutting room mirror

297

This article has a talk page!
view on tcrf.net

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