Ultima Underworld/technical/conversations/4
Technical Details Warning |
While the encyclopedic nature of the codex means that many articles will have information that could spoil some minor aspects of the game for newer players, this article is known to contain technical information about the game, game engine, data files, logic, etc. This information is not generally useful to the typical game players.
Continue reading at your own discretion. |
This page contains decompiled conversation code from Ultima Underworld. The original files came from Paul Carr and are currently archived here.
This file has been modified from that source (by Sir Robin) in the following ways:
- local variables holding pointers to string text have had that string text specified in a comment on that same line. This should make the conversation code easier to read.
- strings (both dereferenced ones in the code and also the ones added to comments as specified above) have been highlighted for easier reading
- function definitions have been anchored and function calls have been linked, to make it easier to follow the flow of the code
Start viewing the flow at main
// cnvdasm - ultima underworld conversation script disassembler / decompiler // // loading game strings // // conversation #4 // string block 0x0e04 (3588), name Shanklick // // 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[778]; if ( private[0] ) { } else { private[2] = 0; private[4] = 0; private[5] = 0; private[8] = 0; private[6] = 0; private[9] = 0; private[10] = 0; private[11] = 0; private[12] = 1; private[13] = 1; private[15] = sex( 2, &locals[4], &locals[3] ); locals[3] = 1; locals[4] = 2; } // end if if ( !private[0] ) { say( "Why you here?" ); } else { say( "You never tell me why you here." ); } // end if locals[5] = 5; // "I am exploring the deeps of the Abyss." locals[6] = 6; // "I have been unjustly imprisoned here." locals[7] = 7; // "Begone from here, thou vile fiend!" locals[8] = 8; // "I beg thy pardon, I am leaving." locals[9] = 0; // "" locals[26] = babl_menu( 0, &locals[5] ); switch ( locals[26] ) { case 1: goto label_0374; break; case 2: goto label_041c; break; case 3: goto label_0996; break; case 4: locals[27] = 2; func_00b1( &locals[27] ); break; } // end switch } // end if label_0374:; label_0374:; label_0374:; if ( private[2] < 1 ) { private[2] = 1; say( "Hmm. You out exploring? You not look like Knight of Crux or Seer of Moon. They go exploring.\n" " Looks like maybe you one of them Outcasts from near great door. But they weak-willed and cowardly, don't go exploring. Where you from?" ); } else { say( "So where you from?" ); } // end if locals[49] = 1; locals[28] = 11; // "I was imprisoned here by Baron Almric." locals[50] = private[12]; locals[29] = 12; // "Actually, I am a Knight of the Crux." locals[51] = private[13]; locals[30] = 13; // "Actually, I am a Seer of the Moonstone." locals[52] = 1; locals[31] = 14; // "Pardon me, but I must be going." locals[32] = 0; // "" locals[70] = babl_fmenu( 0, &locals[28], &locals[49] ); switch ( locals[70] ) { case 11: goto label_04c2; break; case 12: goto label_06da; break; case 13: goto label_0880; break; case 14: locals[71] = 2; func_00b1( &locals[71] ); break; } // end switch } // end if } // end if label_041c:; if ( private[2] < 2 ) { private[2] = 2; say( "You been unjustly imprisoned, hah? Sound like one of them Outcasts from above. Them always complaining that crazy baron from other side send them here as punishment. Okay with me. They tasty.\n" " But you not one of them, you down here. Who lock you up?" ); } else { say( "Me ask who lock you up." ); } // end if locals[72] = 17; // "Baron Almric." locals[73] = 18; // "Lord British." locals[74] = 19; // "I don't want to talk about it." locals[75] = 20; // "Er...I must be going." locals[76] = 0; // "" locals[93] = babl_menu( 0, &locals[72] ); switch ( locals[93] ) { case 1: goto label_04c2; break; case 2: goto label_0622; break; case 3: goto label_068e; break; case 4: locals[1] = func_0fef(); locals[94] = locals[1]; if ( 0 == locals[94] ) { } else { if ( 1 == locals[94] ) { locals[95] = 1; } // end if func_00b1( &locals[95] ); } else { break; } // end switch } // end if label_04c2:; label_04c2:; label_04c2:; if ( private[2] < 3 ) { private[2] = 3; say( "Almric, hah? Yeah, me heard that name from Outcasts. Most of them locked up by that guy for some crime or other. Why he lock you up?" ); } else { say( "So why Almric lock you up?" ); } // end if locals[96] = 23; // "I am accused of kidnapping his daughter." locals[97] = 24; // "He doesn't like me." locals[98] = 0; // "" locals[117] = babl_menu( 0, &locals[96] ); switch ( locals[117] ) { case 1: goto label_0514; break; case 2: goto label_056b; break; } // end switch } // end if label_0514:; label_0514:; label_0514:; label_0514:; if ( private[2] < 4 ) { private[2] = 4; say( "Hey, me hear something about that. Big troll was dragging around girl a while ago. Heard she was baron's daughter." ); } else { say( "Me see big troll carrying young girl a while ago. Heard she daughter of baron who lock up Outcasts." ); } // end if private[8] = 1; locals[118] = 27; // "Where did this troll go?" locals[119] = 28; // "What would the troll want with her?" locals[120] = 0; // "" locals[139] = babl_menu( 0, &locals[118] ); switch ( locals[139] ) { case 1: goto label_0a10; break; case 2: goto label_05e2; break; } // end switch } // end if label_056b:; if ( !private[5] ) { say( "He lock you up just because he no like you? That no sound like the Almric of Outcasts talk. He accuse you of something, I bet. What he accuse you of?" ); } else { say( "All right, what they accuse you of?" ); } // end if locals[140] = 31; // "Well, I am accused of kidnapping Almric's daughter." locals[141] = 32; // "Excuse me, but I must be going now." locals[142] = 0; // "" locals[161] = babl_menu( 0, &locals[140] ); switch ( locals[161] ) { case 1: goto label_0514; break; case 2: locals[1] = func_0fef(); locals[162] = locals[1]; if ( 0 == locals[162] ) { } else { if ( 1 == locals[162] ) { locals[163] = 1; } // end if func_00b1( &locals[163] ); } else { break; } // end switch label_05e2:; say( "Me not know for sure. Maybe him want to eat her. Maybe him work for someone else." ); locals[164] = 34; // "Who could he be working for?" locals[165] = 35; // "Dost thou know where he went?" locals[166] = 0; // "" locals[185] = babl_menu( 0, &locals[164] ); switch ( locals[185] ) { case 1: goto label_09e3; break; case 2: goto label_0a10; break; } // end switch label_0622:; say( "Me not know much about outside, but me know that Lord British not lock up prisoners here. What you trying to pull, tell me that!" ); locals[186] = 37; // "Ah, yes, it was Baron Almric." locals[187] = 38; // "No, really, it was Lord British." locals[188] = 40; // "Dost thou believe that? Art thou ugly AND stupid?" locals[189] = 0; // "" locals[207] = babl_menu( 0, &locals[186] ); switch ( locals[207] ) { case 1: goto label_04c2; break; case 2: say( "Me no believe you. You up to no good, try to hide something. Me no talk to you anymore." ); locals[208] = 1; func_00b1( &locals[208] ); break; case 3: say( "Get lost!" ); locals[209] = 1; func_00b1( &locals[209] ); break; } // end switch label_068e:; say( "No wanna talk about being locked up, eh? That okay, me wouldn't wanna talk about being locked up either. But you look like smart @GS46. Maybe you help me, eh?" ); locals[210] = 43; // "How can I help you?" locals[211] = 44; // "No thank you, I must be going." locals[212] = 0; // "" locals[231] = babl_menu( 0, &locals[210] ); switch ( locals[231] ) { case 1: goto label_0a86; break; case 2: say( "Okay. Maybe you help later." ); locals[232] = 2; func_00b1( &locals[232] ); break; } // end switch } // end if label_06da:; locals[233] = 32; if ( get_quest( 1, &locals[233] ) >= 3 ) { } else { if ( private[13] ) { say( "You no look like Knight of Crux to me. Not got stuff like them." ); } else { say( "First you Seer and now you Knight?" ); } // end if locals[234] = 48; // "I am a recent initiate of their order." locals[235] = 49; // "Well, I'm not really a knight." locals[236] = 50; // "Excuse me, but I must be going." locals[237] = 0; // "" locals[255] = babl_menu( 0, &locals[234] ); switch ( locals[255] ) { case 1: goto label_077a; break; case 2: goto label_0876; break; case 3: locals[1] = func_0fef(); locals[256] = locals[1]; if ( 0 == locals[256] ) { } else { if ( 1 == locals[256] ) { locals[257] = 1; } // end if func_00b1( &locals[257] ); } else { } // end if break; } // end switch } // end if label_077a:; if ( private[2] < 6 ) { private[2] = 6; say( "New knight, hah? You must be on quest. What kind of quest you on?" ); } else { say( "You got quest yet?" ); } // end if locals[258] = 53; // "I am to rescue a young girl who has been kidnapped." locals[259] = 54; // "I seek the Talismans of Sir Cabirus." locals[260] = 55; // "I am not currently on a quest." locals[261] = 0; // "" locals[279] = babl_menu( 0, &locals[258] ); switch ( locals[279] ) { case 1: private[7] = 1; goto label_0514; break; case 2: private[7] = 1; goto label_07f6; break; case 3: say( "Hmm. No quest, hah? What kind of knight you be with no quest?" ); locals[280] = 2; func_00b1( &locals[280] ); break; } // end switch label_07f6:; say( "Gifts Cabirus was going to give out? That long time ago, before we was even Ghouls. Me not hear of them talmans since crazy wizard talking 'bout justice come and seal off tombs." ); locals[281] = 58; // "Tell me of this wizard." locals[282] = 59; // "Before you were Ghouls?" locals[283] = 0; // "" locals[302] = babl_menu( 0, &locals[281] ); switch ( locals[302] ) { case 1: goto label_0e48; break; case 2: goto label_0836; break; } // end switch label_0836:; say( "Ghouls not always here. After collapse, some people start to live in tombs, eat buried bodies there. Many years, now we Ghouls, never worry about find food to eat." ); locals[303] = 61; // "I see. Canst thou tell me of the wizard?" locals[304] = 62; // "Thou art truly a vile fiend!" locals[305] = 0; // "" locals[324] = babl_menu( 0, &locals[303] ); switch ( locals[324] ) { case 1: goto label_0e48; break; case 2: goto label_0996; break; } // end switch label_0876:; private[12] = 0; say( "Me no think you were knight." ); goto label_0374; } // end if label_0880:; say( "You no look like Seer of Moon to me. You not wearing robes and talking funny like them." ); locals[325] = 65; // "I am a new member of the seers." locals[326] = 66; // "Well, I'm not really a seer." locals[327] = 67; // "Pardon me, but I must go." locals[328] = 0; // "" locals[346] = babl_menu( 0, &locals[325] ); switch ( locals[346] ) { case 1: goto label_0900; break; case 2: goto label_098c; break; case 3: locals[1] = func_0fef(); locals[347] = locals[1]; if ( 0 == locals[347] ) { } else { if ( 1 == locals[347] ) { locals[348] = 1; } // end if func_00b1( &locals[348] ); } else { break; } // end switch } // end if label_0900:; say( "Hey! Seers a bunch of stuck-up mages, no take new members. What you think? You think me stupid or something?" ); locals[349] = 69; // "Oh sorry, I'm not a seer." locals[350] = 70; // "Yes, in fact I do think thou art stupid." locals[351] = 72; // "Excuse me, but I must be going." locals[352] = 0; // "" locals[370] = babl_menu( 0, &locals[349] ); switch ( locals[370] ) { case 1: goto label_098c; break; case 2: say( "Yeah, me think you stupid too! Goodbye!" ); locals[371] = 1; func_00b1( &locals[371] ); break; case 3: locals[1] = func_0fef(); locals[372] = locals[1]; if ( 0 == locals[372] ) { } else { if ( 1 == locals[372] ) { locals[373] = 1; } // end if func_00b1( &locals[373] ); } else { break; } // end switch label_098c:; label_098c:; private[13] = 0; say( "Me no think you were seer." ); goto label_0374; label_0996:; label_0996:; say( "Me fiend, hah? You big tough @GS46, too good to talk to fiend like me?" ); locals[1] = func_0f6f(); locals[374] = locals[1]; if ( 0 == locals[374] ) { func_0fe4(); } else { if ( 1 == locals[374] ) { } else { if ( 2 == locals[374] ) { locals[375] = 1; func_00b1( &locals[375] ); } // end if } // end if say( "What, you think you someone important, that you can talk to me like that? Me no talk to likes of you." ); locals[376] = 1; func_00b1( &locals[376] ); label_09e3:; say( "Me hear some rumors, maybe me got idea who troll work for. Why should me tell you?" ); private[10] = 1; locals[1] = func_1060(); locals[377] = locals[1]; if ( 0 == locals[377] ) { } else { if ( 1 == locals[377] ) { } else { label_0a10:; label_0a10:; say( "Maybe me know where troll went. Why should me tell you?" ); private[9] = 1; locals[1] = func_1060(); locals[378] = locals[1]; if ( 0 == locals[378] ) { } else { if ( 1 == locals[378] ) { goto label_0a3d; } // end if } // end if label_0a3d:; say( "What me really want is your brain!" ); locals[379] = 79; // "Methinks I'll leave ere thou hast the chance to lay your hands upon it!" locals[380] = 80; // "What exactly didst thou have in mind?" locals[381] = 0; // "" locals[400] = babl_menu( 0, &locals[379] ); switch ( locals[400] ) { case 1: locals[401] = 2; func_00b1( &locals[401] ); break; case 2: goto label_0a86; } // end if } // end if break; } // end switch label_0a86:; label_0a86:; label_0a86:; label_0a86:; label_0a86:; if ( !private[6] ) { private[2] = 5; say( "Me leader of Ghouls. Me got problem, maybe you solve.\n" " One my folk has Laughing Sickness, come from eat bad brain. Me think someone give him bad brain on purpose.\n" " How me find out who? Sick one no can talk, only laugh." ); } else { say( "Okay, here problem again. Listen careful this time!\n" " One my folk has Laughing Sickness, come from eat bad brain. Me think someone give him bad brain on purpose.\n" " How me find out who? Sick one can't talk, only laugh." ); } // end if private[6] = 1; locals[402] = 83; // "Here is a trick to catch the knave . . . " locals[403] = 84; // "I think I know a way to make the villain confess . . . " locals[404] = 0; // "" locals[423] = babl_menu( 0, &locals[402] ); switch ( locals[423] ) { case 1: goto label_0adb; break; case 2: goto label_0d72; break; } // end switch label_0adb:; locals[424] = 85; // "Say thou'rt glad someone poisoned this ghoul, because he attempted to force his attentions upon thee. When the guilty one claims a reward, seize him!" locals[425] = 86; // "A moment . . . Couldst thou tell me thy problem again?" locals[426] = 0; // "" locals[445] = babl_menu( 0, &locals[424] ); switch ( locals[445] ) { case 1: break; case 2: goto label_0a86; break; } // end switch say( "You real sneaky. Me like!" ); locals[467] = private[9]; locals[446] = 88; // "I thank thee. Now, about the troll . . . " locals[468] = private[10]; locals[447] = 89; // "I thank thee. Now who does the troll work for?" locals[469] = 1; locals[448] = 90; // "Well, I must be going." locals[449] = 0; // "" locals[488] = babl_fmenu( 0, &locals[446], &locals[467] ); switch ( locals[488] ) { case 88: goto label_0c01; break; case 89: goto label_0c5e; break; case 90: say( "Me try your trick. Thanks!" ); locals[489] = 3; func_00b1( &locals[489] ); break; } // end switch } // end if locals[511] = private[9]; locals[490] = 92; // "Canst thou tell me of the troll?" locals[512] = private[10]; locals[491] = 93; // "Who was this troll working for?" locals[513] = 1; locals[492] = 94; // "I must be on my way now." locals[493] = 0; // "" locals[532] = babl_fmenu( 0, &locals[490], &locals[511] ); switch ( locals[532] ) { case 92: goto label_0c01; break; case 93: goto label_0c5e; break; case 94: func_00e0(); break; } // end switch label_0c01:; label_0c01:; label_0c01:; say( "Me follow troll down stairs east of center room. Hear Seers say lair of weird mage down one more set of stairs. Me think troll going to weird wizard with girl. Me not know why." ); locals[554] = private[11]; locals[533] = 96; // "Indeed. What about the crazy wizard?" locals[555] = 1; locals[534] = 97; // "I thank thee. Farewell." locals[535] = 0; // "" locals[575] = babl_fmenu( 0, &locals[533], &locals[554] ); switch ( locals[575] ) { case 96: goto label_0e48; break; case 97: locals[576] = 2; func_00b1( &locals[576] ); break; } // end switch label_0c5e:; label_0c5e:; label_0c5e:; say( "Me think troll work for weird mage who live just below home of Seers. Me follow troll down eastern stair, hear Seers talk about weird mage. Troll take girl there. Me not know why." ); locals[598] = private[11]; locals[577] = 99; // "Indeed. What about the crazy wizard?" locals[599] = 1; locals[578] = 100; // "I thank thee. Farewell." locals[579] = 0; // "" locals[619] = babl_fmenu( 0, &locals[577], &locals[598] ); switch ( locals[619] ) { case 99: goto label_0e48; break; case 100: locals[620] = 2; func_00b1( &locals[620] ); } // end if break; } // end switch locals[621] = npc_attitude; if ( 3 == locals[621] ) { say( "I glad you back!" ); } else { if ( 2 == locals[621] ) { say( "Oh, you again." ); } else { if ( 1 == locals[621] ) { say( "Why you here again?" ); func_10b6(); } else { if ( 0 == locals[621] ) { say( "Nasty person, you still talk to me?" ); func_008b(); } // end if } // end if } // end if } // end if } // end if locals[622] = private[2]; if ( 0 == locals[622] ) { } else { if ( 1 == locals[622] ) { } else { if ( 2 == locals[622] ) { } else { if ( 3 == locals[622] ) { } else { if ( 4 == locals[622] ) { } else { if ( 5 == locals[622] ) { } else { if ( 6 == locals[622] ) { } else { if ( 7 == locals[622] ) { } else { if ( 8 == locals[622] ) { } else { say( "I no feel like talking to you." ); func_00e0(); label_0d72:; locals[623] = 106; // "Hold a feast, and announce partway through that the meal is from the poisoned one's stock. The guilty one will know 'twas poisoned, and give himself away." locals[624] = 107; // "Wait . . . what was thy problem again?" locals[625] = 0; // "" locals[644] = babl_menu( 0, &locals[623] ); switch ( locals[644] ) { case 1: break; case 2: goto label_0a86; break; } // end switch say( "You smart! That clever AND fair! Not too often me hear of anyone fair in Abyss. Last time was when crazy wizard guy was around talking about justice." ); private[11] = 1; locals[666] = private[9]; locals[645] = 109; // "I try. Now, canst tell me of the troll?" locals[667] = private[10]; locals[646] = 110; // "I try. Now, canst thou tell me of the troll?" locals[668] = 1; locals[647] = 111; // "Tell me about this wizard." locals[669] = 1; locals[648] = 112; // "Perhaps. I shall see. Thank thee." locals[649] = 0; // "" locals[687] = babl_fmenu( 0, &locals[645], &locals[666] ); switch ( locals[687] ) { case 109: goto label_0c01; break; case 110: goto label_0c5e; break; case 111: goto label_0e48; break; case 112: locals[688] = 3; func_00b1( &locals[688] ); } // end if break; } // end switch label_0e48:; label_0e48:; label_0e48:; label_0e48:; label_0e48:; label_0e48:; private[4] = 1; private[2] = 7; say( "Ghouls used to live in tombs, lots of food there. After big collapse, crazy wizard come here, talking 'bout justice. He throw us out of tombs. Said ghouls no care about justice so we no could live there anymore. He put part of sword in tombs too, I think." ); locals[689] = 114; // "Where are the tombs of which you speak?" locals[690] = 115; // "I thank thee. I must be going." locals[691] = 0; // "" locals[710] = babl_menu( 0, &locals[689] ); switch ( locals[710] ) { case 1: goto label_0e9e; break; case 2: say( "G'bye." ); locals[711] = 2; func_00b1( &locals[711] ); break; } // end switch label_0e9e:; private[2] = 8; say( "Tombs north and east from here. Long time since me there. Entrance used to be left of big eastern corridor, but wizard hid it and we no can find now." ); locals[712] = 118; // "I thank thee. Farewell." locals[713] = 0; // "" locals[733] = babl_menu( 0, &locals[712] ); if ( locals[733] == 1 ) { locals[734] = 2; func_00b1( &locals[734] ); } // end if } // end if locals[756] = private[6]; locals[735] = 119; // "Canst thou tell me of thy problem?" locals[757] = private[8]; locals[736] = 120; // "Canst thou tell me of the troll?" locals[758] = private[4]; locals[737] = 121; // "Canst thou tell me of the wizard?" locals[759] = 1; locals[738] = 122; // "I was just leaving." locals[739] = 0; // "" locals[777] = babl_fmenu( 0, &locals[735], &locals[756] ); switch ( locals[777] ) { case 119: goto label_0a86; break; case 120: goto label_0514; break; case 121: goto label_0e48; break; case 122: locals[778] = 2; func_00b1( &locals[778] ); break; } // end switch } // end func void func_0f6f() { int locals[23]; private[14] = 1; locals[2] = 123; // "I did not mean to offend thee." locals[3] = 124; // "Foul cur!" locals[4] = 125; // "Excuse me, I must be going." locals[5] = 0; // "" locals[23] = babl_menu( 0, &locals[2] ); switch ( locals[23] ) { case 1: locals[1] = 0; goto label_0fdc; break; case 2: locals[1] = 1; goto label_0fdc; break; case 3: locals[1] = 2; goto label_0fdc; break; } // end switch label_0fdc:; label_0fdc:; label_0fdc:; return locals[1]; } // end func void func_0fe4() { say( "Hmm. So first you mean @GS46 and now you nice @GS46. All right, me let you off this time. No let it happen again." ); } // end func void func_0fef() { int locals[23]; if ( !private[5] ) { private[5] = 1; say( "Hey, you no can leave in middle of conversation!" ); locals[2] = 128; // "Oh, I'm sorry. Do go on." locals[3] = 129; // "Yes I can." locals[4] = 0; // "" locals[23] = babl_menu( 0, &locals[2] ); switch ( locals[23] ) { case 1: locals[1] = 0; goto label_1058; break; case 2: locals[1] = 1; goto label_1058; } // end if } else { break; } // end switch say( "Fine. You be that way. Good riddance!" ); locals[1] = 1; goto label_1058; label_1058:; label_1058:; label_1058:; return locals[1]; } // end func void func_1060() { int locals[23]; locals[2] = 131; // "Is there anything I can do for thee?" locals[3] = 132; // "What dost thou want?" locals[4] = 0; // "" locals[23] = babl_menu( 0, &locals[2] ); switch ( locals[23] ) { case 1: locals[1] = 0; goto label_10ae; break; case 2: locals[1] = 1; goto label_10ae; break; } // end switch label_10ae:; label_10ae:; return locals[1]; } // end func void func_10b6() { int locals[23]; say( "I no want talk to you. You make me mad." ); locals[1] = 134; // "I'm sorry. I did not mean to upset thee." locals[2] = 135; // "Then I do not want to speak with thee either." locals[3] = 0; // "" locals[22] = babl_menu( 0, &locals[1] ); switch ( locals[22] ) { case 1: npc_attitude = npc_attitude + 1; return; break; case 2: say( "Fine!" ); locals[23] = 1; func_00b1( &locals[23] ); break; } // end switch } // end func