home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume15 / dinkum / part04 / monster.c < prev   
C/C++ Source or Header  |  1993-01-27  |  24KB  |  684 lines

  1. #define MNSTR
  2. #include "dink_sym.h"
  3. #include "dink_glb.h"
  4.  
  5. void monster(i_n, old_n)
  6. /********************************************************************/
  7. /*                                                                  */
  8. /*                  --- The Monster Subroutine ---                  */
  9. /*                                                                  */
  10. /*  monster_flag is a global variable input parameters              */
  11. /*                                                                  */
  12. /*  Software by Gary A. Allen, Jr.    7 Sept. 1989, Version: Mk 1.5 */
  13. /*           (c) Copyright 1989 by Gary A. Allen, Jr.               */
  14. /*                                                                  */
  15. /********************************************************************/
  16. int *i_n, *old_n ;
  17. {
  18. #ifdef __TURBOC__
  19. void ender(int), long_descp(int), hold_it(void), boom(void) ;
  20. #endif
  21.  
  22. register int i, j ;
  23. int n, sw_chasing, sw_local, j_chase, j_local ;
  24. static int sw_snaked = FALSE, sw_hoop = FALSE, bear_flag = 0 ;
  25. static int old_n_1, old_n_2, sw_replaced = FALSE, sw_wombat = FALSE ;
  26. static int sw_nogo = FALSE, sw_guarded = TRUE, sw_letter = FALSE ;
  27. static int count_down = 0 ;
  28.  
  29. /* set up some of the input variables */
  30. n = *i_n ;
  31. sw_chasing = FALSE ; /* turn off the chasing monster switch */
  32. sw_local = FALSE ;   /* turn off the local monster switch */
  33.  
  34. /* There can be no active monsters while in the closet */
  35. if (n == R_closet) {
  36.     monster_flag = F_no_monster ;
  37.     if (sw_letter == TRUE) {
  38.         sw_letter = FALSE ;
  39.         sw_nogo = TRUE ;
  40. printf("\nYou hear a loud \"BOOM!\" from the Prayer Room followed\n");
  41. printf("by the sounds of people shouting and cursing in Farsi. I\n");
  42. printf("think it is definitely time that we leave.\n") ;
  43.     }
  44.     return ;
  45. }
  46.  
  47. /* scan the enemy table for the local and/or chasing monsters */
  48. for (j = 0; j <= enemy_max; j++) {
  49.     if (enemy[j][E_location] == n) {
  50.         sw_local = TRUE;
  51.         j_local = j ;
  52.     }
  53.     else if (enemy[j][E_status] != F_asleep){
  54.         if ((N_mullah == j)||(N_guards == j)||((N_ned == j)&&
  55.         (enemy[j][E_status] == F_stealing))) continue ;
  56.         sw_chasing = TRUE;
  57.         j_chase = j ;
  58.     }
  59.  
  60. /* see if the monster is local */
  61. if (sw_local) {
  62. /* deal with case of being chased by monster to another monster */
  63. if (sw_chasing) {
  64.  
  65.     switch(j_chase) {
  66. /* Mutant wombat scares off the local monser */
  67.     case N_wombat:
  68. /* put the local monster to sleep and swap location with wombat  */
  69.     enemy[j_local][E_status] = F_asleep ;
  70.     enemy[j_local][E_location] = enemy[N_wombat][E_location] ;
  71.     goto chaser ;
  72.  
  73. /* Hoop Snake breaks off the chase */
  74.     case 6:
  75.     case 7:
  76.     case 8:
  77.     case 9:
  78.     case 10:
  79.     case 11:
  80.     case 12:
  81.     case 13:
  82. printf("                     ---- What a relief!! ---- \n") ;
  83. printf("           The dreaded hoop snake has broken off pursuit.\n");
  84. printf("                         But what is this!!\n\n") ;
  85. printf("You see yet another terrible creature!\n");
  86.     sw_replaced = TRUE  ;
  87.     break ;
  88.     }
  89.  
  90.     /* put the chasing monster to sleep */
  91.     monster_flag = F_no_monster ;
  92.     enemy[j_chase][E_status] = F_asleep ;
  93.     sw_chasing = FALSE;
  94. }
  95.  
  96. /* local monster routines */
  97. j = j_local ;
  98. switch(j) {
  99.  
  100. /* Revolutionary Guard local (only) behavior */
  101. case N_guards:
  102. monster_flag = F_monster_active ;
  103.  
  104. /* guards always kill after the letter bomb has exploded */
  105. if (sw_nogo) {
  106. printf("\nWith you are three men dressed in ripped and shredded ");
  107. printf("clothes which have\nbeen blackened by an explosion.  They ") ;
  108. printf("are armed to the teeth and insane\nwith rage.  They take ");
  109. printf("one look at you and proceed to cut you to pieces with\n");
  110. printf("their automatic weapons!\n\n");
  111.     ender(F_died) ;
  112. }
  113.  
  114. /* guards always kill if they see a rifle */
  115. if (object[O_rifle][J_loc] == B_have) {
  116. printf("With you are four men dressed in rather shabby clothes. ");
  117. printf("Three of them\nare clutching AK-47 assault rifles while ");
  118. printf("the fourth one is holding an Uzi\nmachine gun. They ") ;
  119. printf("take one look at the M-16 rifle which you are clutching,\n");
  120. printf("point their own weapons at you and proceed to hose you ");
  121. printf("with a hail of\nlead!  Ten seconds later you look like ");
  122. printf("a piece of Swiss cheese.\n\n") ;
  123.     ender(F_died) ;
  124. }
  125.  
  126. switch (enemy[N_guards][E_status]) {
  127.     case F_asleep:
  128.         enemy[N_guards][E_status] = F_passive ;
  129. printf("With you are four men dressed in rather shabby clothes. ");
  130. printf("Three of them\nare clutching AK-47 assault rifles while ");
  131. printf("the fourth one is holding an Uzi\nmachine gun. They ") ;
  132. printf("search you but find nothing that is obviously a\n") ;
  133. printf("weapon.  They are in a quandary on what to do with ") ;
  134. printf("you, since you\nliterally appeared out of thin air.\n");
  135.         return ;
  136.     
  137.     case F_passive:
  138.         if (enemy[N_mullah][E_status] == F_asleep) {
  139. printf("\nThe four men have concluded that the best thing to do\n");
  140. printf("with you is to take you to their superiors.  Two of the men\n");
  141. printf("roughly grab hold of you and fling you bodily through the\n");
  142. printf("doorway to the east.\n\n") ;
  143.         *i_n = R_prayer;
  144.         long_descp(R_prayer) ;
  145.         goto tossed ;
  146.         }
  147.         if (sw_guarded) {
  148. printf("\nAll of the guards are currently in the prayer room.\n") ;
  149.             sw_guarded = FALSE ;
  150.         }
  151.         return ;
  152.  
  153.     case F_aggressive:
  154.         enemy[N_guards][E_status] = F_killing ;
  155. printf("\nThe four guards grab you by the arms and legs, and frog\n");
  156. printf("march you back into the prayer room.\n");
  157.         *i_n = R_prayer;
  158.         return ;
  159.  
  160.     case F_killing:
  161. printf("\nThe guards are tired of fooling with you.  One of them\n") ;
  162. printf("hits you on the head with the butt of his rifle.  Then the\n");
  163. printf("other two guards drag you outside where you are executed\n");
  164. printf("before a jeering mob of 30,000 people!\n\n") ;
  165.         ender(F_died) ;
  166.  
  167. } /* end of the Guards local routine and switch block */
  168.  
  169.  
  170. /* Chief Mullah local (only) behaivor */
  171. case N_mullah:
  172. switch (enemy[N_mullah][E_status]) {
  173.     case F_asleep:
  174. tossed:
  175.         printf("\n") ;
  176.         hold_it() ;
  177.         enemy[N_mullah][E_status] = F_aggressive ;
  178.         enemy[N_guards][E_status] = F_aggressive ;
  179.  
  180. printf("The chief Mullah (or whatever he is) who is sitting on the\n");
  181. printf("dias glares in your direction and begins expounding in a\n");
  182. printf("long monologue in Farsi. One of his Revolutionary Guards\n") ;
  183. printf("starts translating the Mullah's words into fairly good\n");
  184. printf("English (with an American accent!). Here is what he said:\n") ;
  185. printf("\n\"I can see by your slouch hat, singlet and short pants\n");
  186. printf("that you are a good-for-nothing satanic Australian. I am\n");
  187. printf("compelled to point out that your sort is most unwelcomed in\n");
  188.  
  189. /* see if the user has any valuables or the letter */
  190.         for (i = 0; i <= objcnt; i++) { 
  191.             if ((object[i][J_loc] == B_have)&& 
  192.     ((O_letter == i)||(object[i][J_value] > 0))) {
  193.  
  194. /* Player has something the Mullah wants, so he lives */
  195. printf("this holy precinct.  Unless you can provide some good\n");
  196. printf("reasons (preferably financial ones) to the contrary, I\n");
  197. printf("shall order you to be executed immediately for the\n");
  198. printf("amusement and edification of the local populace!\"\n") ;
  199.                 count_down = 0 ;
  200.                 return ;    
  201.             }
  202.         }
  203. /* Player has no valuables and doesn't have the letter so he dies */
  204. printf("this holy precinct.  Since you have nothing of value, our\n");
  205. printf("usual practice would be to take you hostage and extract a\n");
  206. printf("ransom from your government.  However the Ozzie Dollar\n") ;
  207. printf("doesn't buy all that much anymore, so we'll just execute\n");
  208. printf("you and leave it at that.\"\n") ;
  209.         goto mullah_kills ;
  210.  
  211.     case F_aggressive:
  212.         if (object[O_letter][J_loc]==R_prayer) goto see_letter;
  213.         count_down++ ;
  214.         switch(count_down) {
  215.         case 1:
  216. printf("\nThe mullah is waiting for you to give him something.\n") ;
  217.             return ;
  218.         case 2:
  219. printf("\nThe mullah is becoming quite impaitent.  You had better\n") ;
  220. printf("do something soon!\n") ;
  221.         enemy[N_mullah][E_status] = F_killing ;
  222.         }
  223.         return ;
  224.  
  225.     case F_passive:
  226.         count_down++ ;
  227.         switch(count_down) {
  228.  
  229.         case 1:
  230. printf("\nThe mullah is examining the envelope of Muammar's letter.\n");
  231.             return ;
  232.  
  233.         case 2:
  234. printf("\nThe mullah has turned the envelope over and is just\n") ;
  235. printf("about to open it.\n") ;
  236.             return ;
  237.  
  238.         case 3:
  239.             boom() ;
  240. printf("The mullah opened the letter.  Needless to say, the letter\n") ;
  241. printf("was a bomb.  The good news is the nasty old mullah died.\n");
  242. printf("The bad news is you died in the explosion as well!\n\n") ;
  243.             ender(F_died) ;
  244.         }
  245.  
  246.     case F_killing:
  247.         if (object[O_letter][J_loc]==R_prayer) goto see_letter;
  248. printf("\"You are a brainless idiot!\" screams the Mullah!\n") ;
  249.         goto mullah_kills ;
  250. } /* end of mullah status switch block */
  251.  
  252. /* The mullah sees Gaddafi's letter */
  253. see_letter:
  254. printf("\nThe Mullah gives the letter a casual glance, then\n");
  255. printf("suddenly his face lights up and he claps his hands with\n") ;
  256. printf("glee.\n\n") ;
  257. printf("\"It's a letter from my old friend Muammar!\", he exclaims!\n");
  258. printf("\"This is an occasion for much jubulation.  As a token of\n");
  259. printf("my esteem take this ancient gong clapper made of gold and\n");
  260. printf("ivory.  It was recovered from the personal collection of\n") ;
  261. printf("the deposed Shah. It once belonged to the ancient Persian\n") ;
  262. printf("King Cyrus and is priceless!\"\n\n") ;
  263. printf("With this glad tiding the Mullah hands you the ancient\n") ;
  264. printf("clapper and then reaches down to pick up the letter from\n") ;
  265. printf("his old friend.\n") ;
  266.  
  267. enemy[N_mullah][E_status] = F_passive ;
  268. enemy[N_guards][E_status] = F_passive ;
  269. object[O_letter][J_loc] = B_destroyed ;
  270. --room[R_prayer][M_obj_cnt] ;
  271. object[O_clapper][J_loc] = B_have ;
  272. object[O_detector][J_loc] = R_guard ;
  273. ++room[R_guard][M_obj_cnt] ;
  274. sw_letter = TRUE ;
  275. count_down = 0 ;
  276. return ;
  277. /* end of the mullah local behavior routine */
  278.  
  279. /* Ned Kelly local behavior */
  280. case N_ned:
  281. if (monster_flag == F_no_monster) {
  282. printf("\nAs you approached the entrance of Ned Kelly's hide out, a ") ;
  283. printf("man walked out\n") ;
  284. printf("the front door and prevented you from entering.  He is ");
  285. printf("wearing an iron\n") ;
  286. printf("helmet with thin eye slits which completely covers ");
  287. printf("his head.  He has\n") ;
  288. printf("body armour made of thin sheets of iron that covers ");
  289. printf("his chest and abdomen.\n") ;
  290. printf("He is holding a 12 guage double barrel shotgun ");
  291. printf("and has a pistol on\nhis hip.  ") ;
  292. printf("I could be wrong but I think this is Ned Kelly!\n\n");
  293.     *i_n = R_hideout_entr ;
  294.     monster_flag = F_monster_active ;
  295.     enemy[N_ned][E_status] = F_passive ;
  296.     return ;
  297. }
  298. else {
  299.     if (enemy[N_ned][E_status] == F_killing) goto ned_kills ;
  300. printf("\nNed is not about to allow you to enter his hide out.  He ");
  301. printf("is now expressing\n") ;
  302. printf("his displeasure with your continued presence by cocking both ");
  303. printf("of the hammers on\n") ;
  304. printf("his shotgun and pointing it at your head.  I believe it is ");
  305. printf("time to go!!\n\n") ;
  306.     *i_n = R_hideout_entr ;
  307.     enemy[N_ned][E_status] = F_killing ;
  308.     return ;
  309. }
  310.  
  311. /* Mutant Wombat monster behavior */
  312. case N_wombat:
  313. sw_replaced = FALSE ; 
  314. if (monster_flag == F_no_monster) {
  315. printf("\n                        ----- OH NO!! -----\n") ;
  316. printf("                  You are in ***SERIOUS TROUBLE*** !!!\n") ;
  317. printf("Forget about hoop snakes, and forget about drop bears.  This ");
  318. printf("is the WORST\n") ;
  319. printf("thing that can be found in the ACME Mine.  You see before ");
  320. printf("you the awful\n") ;
  321. printf("spawn of the Pommy nuclear weapon's tests. Its ancestors ");
  322. printf("were inoffensive\n") ;
  323. printf("creatures, but gamma radiation has transformed this into...\n");
  324. printf("                      The Dreadful Mutant Wombat!! \n") ;
  325. printf("Normally I would advise you to run for your life.  However ");
  326. printf("there's really\n");
  327. printf("no point.  You can not out run this thing, and it's almost ");
  328. printf("impossible to\n");
  329. printf("kill.  You might as well just stand here and let it finish ");
  330. printf("you off as\n") ;
  331. printf("quickly and painlessly as possible.\n\n") ;
  332.     monster_flag = F_monster_active ;
  333.     enemy[N_wombat][E_status] = F_aggressive ;
  334.     old_n_1 = n ; 
  335.     old_n_2 = 0 ; /* zero out the previous location */
  336.     *old_n = old_n_2 ;
  337.     return ;
  338. }
  339. else {
  340.     if (enemy[N_wombat][E_status] == F_aggressive) {
  341. printf("\nThe wombat is approaching you.  Its mouth is wide open ") ;
  342. printf("showing its\n") ;
  343. printf("enormous canines.  Its claws are fully extended.  The ") ;
  344. printf("wombat sees\n") ;
  345. printf("you as an easy meal and is preparing to feast.\n") ;
  346.         enemy[N_wombat][E_status] = F_killing ;
  347.         return ;
  348.     }
  349.     if (enemy[N_wombat][E_status] == F_killing) goto wombat_kills ;
  350. }
  351.  
  352. /* Drop Bear monster behavior */
  353. case 2:
  354. case 3:
  355. case 4:
  356. case 5:
  357. sw_replaced = FALSE ; 
  358. if (monster_flag == F_no_monster) {
  359.     switch(bear_flag) {
  360. case 0:
  361. printf("\nAs you walk in, you see something that looks vaguely like") ;
  362. printf(" a koala bear\n") ;
  363. printf("sitting in the middle of the floor.  However this \"koala\"") ;
  364. printf(" has vampire\n") ;
  365. printf("teeth and blood drooling down the sides of its mouth. The") ;
  366. printf(" bear takes\n") ;
  367. printf("one look at you and climbs up the wall onto the ceiling.") ;
  368. printf(" It \n") ;
  369. printf("clings to the ceiling much like a fly and seems to be") ;
  370. printf(" positioning\n") ;
  371. printf("itself to be directly over you.  I could be wrong but I") ;
  372. printf(" think this is\n") ;
  373. printf("the deadly DROP BEAR! \n\n") ;
  374.     bear_flag = 1 ;
  375.     break ;
  376.  
  377. case 1:
  378. printf("\nJust as you walk in, a drop bear flashes by and hits") ;
  379. printf(" the ground with\n");
  380. printf("a THUNK.  That was close!  Had it hit you, and caught ") ;
  381. printf("hold with its\n");
  382. printf("claws, you would have been finished.  The dreaded ");
  383. printf("beast is now\n") ;
  384. printf("running up the wall towards the ceiling to give it ") ;
  385. printf("another go. I\n");
  386. printf("think we had better leave and soon!\n\n") ;;
  387.     bear_flag = 2 ;
  388.     break ;
  389.  
  390. case 2:
  391. printf("\nAs you walk in, you see a drop bear lounging lazily in") ;
  392. printf(" the middle of\n");
  393. printf("the floor. It rolls over and takes one look at you, ") ;
  394. printf("runs towards\n");
  395. printf("the wall and scampers up to the ceiling.  It is now ");
  396. printf("positioning\n") ;
  397. printf("itself to be directly over you.\n\n") ;
  398.     bear_flag = 1 ;
  399.     }
  400.  
  401. monster_flag = F_monster_active ;
  402. enemy[j][E_status] = F_aggressive ;
  403. return ;
  404. }
  405. else {
  406.     if (enemy[j][E_status] == F_aggressive) {
  407. printf("\nThe drop bear is now positioned directly above you.  It is") ;
  408. printf(" hanging batlike\n") ;
  409. printf("by its rear paws, with its front arms reaching out with");
  410. printf(" claws fully \n") ;
  411. printf("extended.  Its mouth is wide open with its vampire teeth ");
  412. printf("clearly visible.\n") ;
  413. printf("I think this thing means business!  Let's make a hasty ");
  414. printf("departure!!\n") ;
  415.         enemy[j][E_status] = F_killing ;
  416.         return ;
  417.     }
  418.     if (enemy[j][E_status] == F_killing) goto bear_kills ;
  419. }
  420.  
  421. /* Hoop Snake monster behavior */
  422. case 6:
  423. case 7:
  424. case 8:
  425. case 9:
  426. case 10:
  427. case 11:
  428. case 12:
  429. case 13:
  430. if (monster_flag == F_no_monster) {
  431.     if (sw_replaced) { 
  432.         sw_replaced = FALSE  ;
  433. printf("\nA new and rested hoop snake rolls into view.  The ");
  434. printf("snake sees you, lets go of\n") ;
  435. printf("its tail and starts slithering towards you with fangs ");
  436. printf("at the ready. \n\n");
  437.     }
  438.     else {
  439.         if (!sw_hoop) {
  440. printf("\nSomething that looks vaguely like a barrel hoop rolls into ");
  441. printf("the passage. You \n") ;
  442. printf("suddenly realize to your horror that this is no hoop but a ");
  443. printf("snake biting its \n") ;
  444. printf("own tail.  The snake lets go of its tail and starts to ");
  445. printf("slither towards you \n") ;
  446. printf("like a regular, highly aggressive snake. \n\n");
  447.             sw_hoop = TRUE ;
  448.         }
  449.         else {
  450. printf("\nA hoop snake rolls towards you.  It lets go of its ");
  451. printf("tail and starts slithering\n") ;
  452. printf("in your direction. \n\n");
  453.         }
  454.     }
  455.     monster_flag = F_monster_active ;
  456.     enemy[j][E_status] = F_aggressive ;
  457.     old_n_1 = n ; 
  458.     old_n_2 = 0 ; /* zero out the previous location */
  459.     *old_n = old_n_2 ;
  460.     return ;
  461. }
  462. else {
  463.     if (enemy[j][E_status] == F_aggressive) {
  464. printf("\nThe hoop snake is coiling up in front of you and ") ;
  465. printf("hissing very aggressively. \n") ;
  466. printf("Venom is dripping from its sharp fangs and seems ") ;
  467. printf("to be burning holes into\n") ;
  468. printf("the stone floor.\n\n") ;
  469. printf("I think it would be wise for us to leave....  Quickly!!\n") ;
  470.         enemy[j][E_status] = F_killing ;
  471.         return ;
  472.     }
  473.     if (enemy[j][E_status] == F_killing) goto snake_kills ;
  474. }
  475. } /* end of the local monster switch group */
  476. }
  477.  
  478. /* chasing monster routines */
  479. chaser: 
  480. j = j_chase ;
  481. switch(j) {
  482. /* Ned Kelly */
  483. case N_ned:
  484.     if (n == R_hideout_entr) {
  485.     if (enemy[N_ned][E_status] == F_passive) {
  486. printf("\nNed Kelly is standing in front of you and is holding a ");
  487. printf("12 guage shotgun\n") ;
  488. printf("in a rather menacing manner.  This guy is really game!\n\n") ;
  489. printf("I suggest we leave.....   and quickly!!\n\n") ;
  490.         enemy[N_ned][E_status] = F_aggressive ;
  491.         return ;
  492.     }
  493.     if (enemy[N_ned][E_status] == F_aggressive) {
  494. printf("\nNed seems to be getting impaitent with you.  He is now ");
  495. printf("expressing his\n") ;
  496. printf("displeasure with your continued presence by cocking both ");
  497. printf("of the hammers on\n") ;
  498. printf("his shotgun and pointing it at your head.  I really think ");
  499. printf("we should be\n") ;
  500. printf("making a hasty departure!!\n\n") ;
  501.         enemy[N_ned][E_status] = F_killing ;
  502.         return ;
  503.     }
  504.     if (enemy[N_ned][E_status] != F_killing) break ;
  505.         else goto ned_kills ;
  506.     }
  507.     else break ;
  508.  
  509. /* Mutant wombat chases */
  510. case N_wombat:
  511.     if (n == R_lift_inside) {
  512. printf("\nYou run as fast as you can into the lift.  You've made it,") ;
  513. printf(" you're in the\n") ;
  514. printf("lift! However as you turn around, you realize to your horror") ;
  515. printf(" that the\n") ;
  516. printf("wombat has also made it inside the lift, and the door ");
  517. printf("is closing!!\n\n") ;
  518. printf("                     Ah, Stuff of Nightmares!!!\n") ;
  519. printf("          ---Trapped in a Lift with a Mutant Wombat!!!---\n\n");
  520. printf("This is just too horrible.  Let it suffice... You died. \n");
  521.     ender(F_died) ;
  522.     }
  523.     if (n == old_n_2) {
  524. printf("The wombat is in that direction.  You can't go that way!\n");
  525.         *i_n = old_n_1 ;
  526.         return ;
  527.     }
  528.     if (!sw_wombat) {
  529. printf("\nAs you flee down the passage, you hear the ");
  530. printf("\"THUD, THUD, THUD\" of the wombat\n") ;
  531. printf("trudging down the passage.  The horrible thing is after") ;
  532. printf(" you!  Give up\n") ;
  533. printf("all hope!  The wombat is driven by nuclear energy and") ;
  534. printf(" will never stop.\n\n") ;
  535.     sw_wombat = TRUE ;
  536.     }
  537.     else { 
  538. printf("\nThe wombat is still chasing you and not tiring. \n") ;
  539.     }
  540.     monster_flag = F_monster_active ;
  541.     enemy[j][E_status] = F_aggressive ;
  542.     --room[enemy[j][E_location]][M_monster] ;
  543.     ++room[n][M_monster] ;
  544.     enemy[j][E_location] = n ;
  545.     old_n_2 = old_n_1 ;
  546.     old_n_1 = n ;
  547.     *old_n = old_n_2 ;
  548.     return ;
  549.  
  550. /* Hoop Snake chases */
  551. case 6:
  552. case 7:
  553. case 8:
  554. case 9:
  555. case 10:
  556. case 11:
  557. case 12:
  558. case 13:
  559.     if (n == R_lift_inside) {
  560. printf("\nYou seek refuge from the hoop snake by fleeing into the ") ;
  561. printf("lift.  Just as you\n") ;
  562. printf("enter the lift, its door begins to close.  Unfortunately the") ;
  563. printf(" hoop snake\n") ;
  564. printf("rolls in the instant before the door is fully closed.\n\n") ;
  565. printf("We will not describe the unpleasant events that occur behind");
  566. printf(" the closed door\n");
  567. printf("of the lift. However one can hear screams, curses, futile ");
  568. printf("banging on the\n");
  569. printf("lift door and loud snake hissing.  After a few minutes ");
  570. printf("there is again silence.\n");
  571. printf("The lift door opens and the hoop snake rolls out and away. ");
  572. printf("A peek inside the\n");
  573. printf("lift reveals your corpse which is in the early phases of ");
  574. printf("rigor mortis.\n") ;
  575.     ender(F_died) ;
  576.     }
  577.     if (n == old_n_2) {
  578.         if (enemy[j][E_status] == F_killing) {
  579. printf("The hoop snake is in that direction.  ") ;
  580. printf("You can't go that way!\n");
  581.         *i_n = old_n_1 ;
  582.         return ;
  583.         }
  584.         else {
  585. printf("You have run back the way you came and passed the hoop ");
  586. printf("snake, which\n") ;
  587. printf("is still biting its tail and rolling like a hoop. The ") ;
  588. printf("vile creature\n") ;
  589. printf("hisses in frustration and does a U-turn to continue ") ;
  590. printf("the chase.\n\n") ;
  591.         }
  592.     }
  593.     else {
  594.         if (!sw_snaked) {
  595. printf("\nAs you flee down the passage, you hear the characteristic ") ;
  596. printf("sound of reptilian\n") ;
  597. printf("scales rubbing the stone floor.  You look over your shoulder") ;
  598. printf(" and see the\n") ;
  599. printf("hoop snake is rolling along right behind you! The dreaded") ;
  600. printf(" thing is chasing you!!\n\n") ;
  601.             sw_snaked = TRUE ;
  602.         }
  603.         else {
  604. printf("\nThe hoop snake is rolling along behind you, and still") ;
  605. printf(" in hot pursuit!\n\n") ;
  606.         }
  607.     }
  608.     monster_flag = F_monster_active ;
  609.     enemy[j][E_status] = F_aggressive ;
  610.     --room[enemy[j][E_location]][M_monster] ;
  611.     ++room[n][M_monster] ;
  612.     enemy[j][E_location] = n ;
  613.     old_n_2 = old_n_1 ;
  614.     old_n_1 = n ;
  615.     *old_n = old_n_2 ;
  616.     return ;
  617. } /* end of the chasing monster switch group */
  618.  
  619. /* player has fled the monster, so turn it off */
  620. monster_flag = F_no_monster ;
  621. enemy[j][E_status] = F_asleep ;
  622. return ;
  623.  
  624. /* Ned Kelly kills the player */
  625. ned_kills:
  626. printf("\nWith an air of professional detachment, Ned Kelly pulls ");
  627. printf("both triggers\n") ;
  628. printf("on his shotgun and blows your head clean off your ") ;
  629. printf("shoulders. \n\n") ;
  630. ender(F_died) ;
  631.  
  632. /* The Mutant Wombat kills the player */
  633. wombat_kills:
  634. printf("\nThe obscene creature has grasped you with its terrible ");
  635. printf("claws!  First the\n");
  636. printf("wombat rips off your right arm with a single jerk and ");
  637. printf("tosses it down its\n");
  638. printf("throat like it was an appetizer (which it was!).  Next ");
  639. printf("the monster studies\n");
  640. printf("you for a moment and then twists off your left leg and ") ; 
  641. printf("chews on it like\n") ;
  642. printf("a turkey drumstick.  After savoring your left leg, it ");
  643. printf("opens its mouth wide\n");
  644. printf("and stuffs you in head first!  Your last memory was ") ;
  645. printf("hearing the crunching\n");
  646. printf("of your own bones as the wombat's jaws clamped down!\n") ;
  647. ender(F_died) ;
  648.  
  649. /* The Hoop Snake kills the player */
  650. snake_kills:
  651. printf("\nThe hoop snake strikes and bites you right on the nose!") ;
  652. printf("\n\nYou begin to thrash around ") ;
  653. printf("like a Baygon sprayed cocky.  The nerve poison \n") ;
  654. printf("makes you jerk around onto your back with your arms and ") ;
  655. printf("legs flailing about\n") ;
  656. printf("in the air.  With time your spasmodic twitching reduces") ;
  657. printf(" in frequency.  You\n") ;
  658. printf("slowly grind down to a halt with the coming of death. \n") ;
  659. ender(F_died) ;
  660.  
  661. /* The drop bear kills the player */
  662. bear_kills:
  663. printf("\nThe drop bear drops on top of you.  First it grabs hold ") ;
  664. printf("of you with its \n") ;
  665. printf("sharp claws that sink deep into your flesh.  Then it bites ");
  666. printf("into your neck \n") ; 
  667. printf("at the jugular vein and begins sucking your blood.  You ");
  668. printf("try desperately \n") ;
  669. printf("to pull the horrible monster off, but it only clamps on ");
  670. printf("harder and sucks \n") ; 
  671. printf("more vigorously.  Soon you grow weak from lack of blood, ");
  672. printf("and lapse into death. \n") ;
  673. ender(F_died) ;
  674.  
  675. /* The Mullah kills the player */
  676. mullah_kills:
  677. printf("\nWith that pronouncement, the chief Mullah claps his hands\n");
  678. printf("twice.  Two Revolutionary Guards drag you outside where you\n");
  679. printf("are executed before a jeering mob of 30,000 people!\n") ;
  680. ender(F_died) ;
  681.  
  682. } /* --- end of the "monster" subroutine --- */
  683.