home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume15 / dinkum2 / part03 / actor.c next >
C/C++ Source or Header  |  1993-01-27  |  19KB  |  632 lines

  1. #define ACTOR
  2. #include "dink_sym.h"
  3. #include "dink_glb.h"
  4.  
  5. void actor(n)
  6. /********************************************************************/
  7. /*                                                                  */
  8. /* Software by Gary A. Allen, Jr. 12 December 1992, Version: Mk 1.3 */
  9. /*           (c) Copyright 1992 by Gary A. Allen, Jr.               */
  10. /*                                                                  */
  11. /********************************************************************/
  12. int n ;
  13. {
  14. #if (PROTOTYPE)
  15. void objector(int) ;
  16. #endif
  17.  
  18. register int i, j ;
  19. int sw_found ;
  20. static int sw_door_kick = FALSE ;
  21.  
  22. switch(n) {
  23.  
  24.     /* mine elevator */
  25.     case R_lift_entr:
  26.         if (room[R_lift_entr][M_rm_status] == S_closed) {
  27. printf("The lift doors are closed and the lift call button ");
  28. printf("is not glowing. It \nseems the electrical power has ");
  29. printf("been turned off at the main switch. \n");
  30.         }
  31.         if (room[R_lift_entr][M_rm_status] == S_flashing) {
  32. printf("The lift doors are closed.  However the call button");
  33. printf(" is flashing. There \nis the sound of electrical equipment ");
  34. printf("humming within the mine lift. \n");
  35.         }
  36.         if (room[R_lift_entr][M_rm_status] == S_open) {
  37. printf("The lift doors are standing open. \n");
  38.         }
  39.         break;
  40.  
  41.     /* office building door */
  42.     case R_office_entr:
  43.         switch(room[R_office_entr][M_rm_status]) {
  44.             case S_open:
  45. printf("      --- The office front door is open. --- \n");
  46.                 break;
  47.             case S_kicked:
  48.                 if (!sw_door_kick) {
  49. printf("The lock of the front door has been shot at several times.\n"); 
  50. printf("The door itself has been kicked in and is broken off at\n") ;
  51. printf("the hinges.  The passage way is free to enter.\n");
  52.                 sw_door_kick = TRUE ;
  53.                 }
  54.                 else {
  55. printf("The front door of the office has been kicked in. \n") ;
  56.                 }
  57.                 break ;
  58.             default:
  59. printf("The office has a front door with a sun faded sign \n"); 
  60. printf("upon which is written:  \"Sorry, We are CLOSED\". \n");
  61. printf("      --- The office door is shut. --- \n");
  62.                 break ;
  63.         }
  64.         break ;
  65.  
  66.     /* Site Managers Office */
  67.     case R_office_mang:
  68.         if (room[R_office_mang][M_rm_status] == S_closed) {
  69. printf("On the wall is a picture of a platypus wearing a hat with");
  70.         printf(" corks \ndangling from the hat's rim.\n");
  71.             break;
  72.         }
  73. if ((room[R_office_mang][M_rm_status] == S_revealed)||
  74.     (room[n][M_rm_status] ==S_dialed)) {
  75. printf("Before you is a picture hinged to the wall that has been ");
  76. printf("swung \nopen revealing a closed combination dial wall safe.\n");
  77.             break;
  78. }
  79.         if (room[n][M_rm_status] == S_open) {
  80. printf("Before you is a picture hinged to the wall that has been");
  81. printf(" swung \nout revealing a wall safe with an open door.\n");
  82.         sw_found = FALSE ;
  83.         for (i = 0; i <= objcnt; i++) {
  84.             if (object[i][J_loc] == B_in_safe) {
  85.                 sw_found = TRUE ;
  86. printf ("You see the following inside the safe: \n");
  87.                 for (j = 0; j <= objcnt; j++) {
  88.                     if (object[j][J_loc] == B_in_safe) {
  89.                         printf ("        ");
  90.                         objector(j) ;
  91.                         printf("\n") ;
  92.                     }
  93.                 }                
  94.                 if (gleep_safe != 0) {
  95.                     printf ("        ");
  96.                     if (gleep_safe == 1) 
  97.                         printf("one gleep\n") ;
  98.                     else
  99.                         printf("%d gleeps\n",gleep_safe) ;
  100.                 }
  101.                 break;
  102.             }
  103.         }
  104.         if (sw_found) break ;
  105.         if (gleep_safe != 0) {
  106. printf("There is nothing in the safe except ") ;
  107.             if (gleep_safe == 1) 
  108.                 printf("a single gleep.\n") ;
  109.             else
  110.                 printf("%d gleeps.\n",gleep_safe) ;
  111.             break ;
  112.         }
  113.         printf("---The safe is empty.--- \n");
  114.         break ;
  115.         } /* end of the "safe open" block */
  116.  
  117.     /* store room */
  118.     case R_store_room:
  119. printf("There is a 1500 Volt circuit breaker box on the wall");
  120.         if (room[n][M_rm_status] == S_off) 
  121. printf(" which has \na switch set in the \"off\" position. \n"); 
  122.         else
  123. printf(" which has \na switch set in the \"on\" position. \n"); 
  124.         break;
  125.  
  126.     /* lift compartment */
  127.     case R_lift_inside:
  128.         if (room[n][M_rm_status] == S_L0) 
  129. printf("The level button with the number zero is flashing. \n"); 
  130.         if (room[n][M_rm_status] == S_L49) 
  131. printf("The level button with the number forty-nine is flashing. \n"); 
  132.         if (room[n][M_rm_status] == S_L67) 
  133. printf("The level button with the number sixty-seven is flashing. \n");
  134.         if (room[n][M_rm_status] == S_L82) 
  135. printf("The level button with the number eighty-two is flashing. \n"); 
  136.         break;
  137.  
  138. } /* --- end of subroutine "actor"--- */
  139.  
  140. void objector(i)
  141. int i ;
  142. {
  143. static char *obj[] = {
  144. "an empty can of Fourex beer",
  145. "a cigarette butt",
  146. "an empty bottle of Black Swan Lager",
  147. "an old doormat with \"ACME Gold Mines Ltd.\" written on it",
  148. "a large brass key",
  149. "a ripped and bent up umbrella",
  150. "a two metre length of fishing tackle without a hook",
  151. "a broken drill bit",
  152. "a very old but detailed map of the ACME Mine",       /*  5  */
  153. "a fragment of a map showing the ACME Mine",
  154. "a sheet of paper with some writing on it",
  155. "a gold bar weighing ten kilograms",
  156. "a hydraulic jack which is rusted solid",
  157. "a large stick of dynamite",
  158. "an M16 ammo clip designed to hold up to 200 rounds",
  159. "a fountain pen which is dried up and useless",
  160. "an orange M16 ammo clip which is glowing a faint pale blue",
  161. "a mechanical pencil without any leads",
  162. "an unloaded, fully automatic M16 infantry rifle",    /*  10 */
  163. "a piece of copper wire",
  164. "a short length of galvanized iron pipe",
  165. "a blasting cap with 20 cm. of fuse attached",
  166. "a box of \"Red Head\" matches",
  167. "a diamond ring with a three carat flawless blue diamond",
  168. "a can opener",
  169. "a bright red ruby the size of an egg",               /*  15 */
  170. "an antique sterling silver teapot with \"N.K.\" engraved on it",
  171. "a silver Syracusian Dekadrachma coin",
  172. "an electrical extension cord",
  173. "a $100 dollar bill",
  174. "an autographed photo of Sir Joh",
  175. "an old folding chair",
  176. "a burned out light bulb",
  177. "a packet containing atropine pills",
  178. "a high quality artificial saphire",
  179. "a huge uncut emerald",
  180. "an oily rag",
  181. "a burned out fluorescent tube",
  182. "a filthy worn out carpet",
  183. "a branch from a gum tree",
  184. "a thick airmail letter, marked \"Postage Due\"",
  185. "a cork from a wine bottle",
  186. "a high intensity battery powered torch",
  187. "an old cockroach trap",
  188. "an empty butane cigarette lighter",
  189. "a small black cube with a blue push button on one side", 
  190. "an ancient and priceless gong clapper made of ivory and gold",
  191. "a Semtex explosive detector with a push button switch",
  192. "a broken shoe lace",
  193. "a dirty old comb",
  194. "a Cornetto ice cream cone wrapper",
  195. "a bald automobile tyre",
  196. "an empty broken egg shell",
  197. "a broken piece of brick",
  198. "a one metre length of rope",
  199. "an empty package of Stradbroke cigarettes",
  200. "a broken automobile fan belt",
  201. "a used automobile oil filter",
  202. "a short piece of string",
  203. "a data recorder having three coloured buttons"
  204. } ;  /* end of the "obj" character string matrix */
  205.  
  206. /* Deal with transformed objects */
  207. if (object[i][J_type] == Z_alias) {
  208.     if (i == O_rifle) {
  209. printf("an M16 infantry rifle with an ammunition clip inserted") ;
  210.         return ;
  211.     }
  212.     if (i == O_dynamite) {
  213. printf("a large stick of dynamite with a fuse type blasting cap") ;
  214.         return ;
  215.     }
  216. }
  217. else printf("%s",obj[i]) ;
  218. } /* --- end of subroutine "objector"--- */
  219.  
  220. void killer(n)
  221. /********************************************************************/
  222. /*                                                                  */
  223. /*  Software by Gary A. Allen, Jr. 22 January 1989  Version: Mk 1.3 */
  224. /*           (c) Copyright 1989 by Gary A. Allen, Jr.               */
  225. /*                                                                  */
  226. /********************************************************************/
  227. int n ;
  228. {
  229. register int i, j ;
  230.  
  231. int hits, j_point, i_10, i_fract ;
  232. int sw_kill, target_k_flag, sw_see, sw_other_object ;
  233. static int sw_hurt = FALSE ;
  234.  
  235. struct monster_struct *mnstr ; 
  236.  
  237. #if (PROTOTYPE)
  238. void ender(int) ;
  239. #endif
  240.  
  241. if (tag[V_VERB_ONLY]&&(verb == V_kill)) {
  242. printf("It may be obvious to you, but you are going to have to tell\n");
  243. printf("me exactly what it is you want to have killed, and \n") ;
  244. printf("with what sort of weapon. \n") ;
  245.     return;
  246. }
  247.  
  248. /* set the subroutine local flags */
  249. if (verb == V_kill) sw_kill = FALSE ;
  250. if (verb == V_shoot) sw_kill = TRUE;
  251. target_k_flag = V_NULL ;
  252. sw_see =  FALSE ;
  253. sw_other_object = FALSE ;
  254.  
  255. if (tag[V_ned]) {
  256.     if (Ned->Location == B_destroyed) {
  257. printf("Forget it, you drongo!! Ned Kelly is already dead!\n") ;
  258.         return ;
  259.     }
  260.     if (Ned->Status == F_asleep) {
  261. printf("There is no Ned Kelly here for me to kill! \n") ;
  262.         return ;
  263.     }
  264.     j_point = 0 ; 
  265.     sw_see =  TRUE ;
  266.     target_k_flag = V_ned ;
  267. }
  268.  
  269. if (tag[V_bear]) {
  270.     for (j = 2; j <= 5; j++) {
  271.         mnstr = (monster_start + j) ;  /* point to the monster */
  272.         if (mnstr->Status != F_asleep) {
  273.             j_point = j ; 
  274.             sw_see =  TRUE ;
  275.             target_k_flag = V_bear ;
  276.             break ;
  277.         }
  278.     }
  279.     if (j > 5) {
  280.         printf("I see no drop bear for me to kill! \n") ;
  281.         return ;
  282.     }
  283. }
  284.  
  285. if (tag[V_wombat]) {
  286.     if (Wombat->Status == F_asleep) {
  287.         printf("I see no wombat for me to kill!\n");
  288.         return ;
  289.     }
  290.     j_point = N_wombat ; 
  291.     sw_see =  TRUE ;
  292.     target_k_flag = V_wombat ;
  293. }
  294.  
  295. if (tag[V_snake]) {
  296.     for (j = 6; j <= 13; j++) {
  297.         mnstr = (monster_start + j) ;  /* point to the monster */
  298.         if (mnstr->Status != F_asleep) {
  299.             j_point = j ; 
  300.             sw_see =  TRUE ;
  301.             target_k_flag = V_snake ;
  302.             break ;
  303.         }
  304.     }
  305.     if (j > 13) {
  306.         printf("I see no hoop snake for me to kill! \n") ;
  307.         return ;
  308.     }
  309. }
  310.  
  311. if (tag[V_rifle]) sw_kill = TRUE ;
  312.  
  313. /* see if the safe is being shot at */
  314. if (tag[V_safe]&&(n == R_office_mang)) {
  315. printf("The safe is made out of harden steel.  You'll only waste ") ;
  316. printf("ammunition \nshooting at it.  Try to open it instead. \n") ;
  317. return ;
  318. }
  319.  
  320. /* see if the target is in the room or holding it */
  321. for (j=0; j <= objcnt; j++) {
  322.     if (tag[object[j][J_parse_id]]){
  323.          if (object[j][J_parse_id] == V_rifle) continue ;
  324.         sw_other_object = TRUE ;
  325.         if (object[j][J_loc] == n) {
  326.             sw_see =  TRUE ;
  327.             target_k_flag = object[j][J_parse_id] ;
  328.             break ;
  329.         }
  330.         if (object[j][J_loc] == B_have) {
  331. printf("I will ***NOT*** shoot at something that I'm holding!!\n");
  332.             return ;
  333.         }
  334.     }
  335. }
  336.  
  337. if (tag[V_rifle] && (!sw_other_object)) tag[V_VERB_ONLY] = TRUE ;
  338.  
  339. if ((!tag[V_VERB_ONLY]) && (!tag[V_DIRECTION])) {
  340.     if (!sw_see) {
  341.         printf("I don't see it here to shoot at it. \n") ;
  342.         return; 
  343.     }
  344.  
  345.     if (target_k_flag == V_NULL) {
  346. printf("It may be obvious to you, but you are going to have to tell\n");
  347. printf("me exactly what it is you want to have killed.\n");
  348.         return ;
  349.     }
  350. }
  351.  
  352. /* resolve killing errors */
  353. if (!sw_kill) {
  354.     printf("What weapon am I suppose to use? \n") ;
  355.     return ;
  356. }
  357.  
  358. if (object[O_rifle][J_loc] != B_have) {
  359. printf("I would do that.  Only there is one small problem.... \n") ;
  360.     printf("You don't have a rifle in your possesion! \n") ;
  361.     return ;
  362. }
  363.  
  364. /* Shoot the gun (or at least try to) */
  365. printf("You pull the trigger... \n\n") ;
  366.  
  367. if (clip_flag == F_no_clip) {
  368. printf("Nothing happens!  \n") ;
  369. printf("Your rifle doesn't have an ammunition clip in it.\n") ;
  370.     return ;
  371. }
  372.  
  373. if (object[O_rifle][J_property] <= 0) {
  374.     printf("Nothing happens!  The ammo clip is out of bullets.\n") ;
  375.     return ;
  376. }
  377.  
  378. switch(rifle_flag) {
  379. case F_safety:
  380.     printf("Nothing happens!  The rifle's safety is still on.\n");
  381.     return ;
  382.             
  383. case F_single:
  384.     printf("Bam! \n\n") ;
  385.     --object[O_rifle][J_property] ;
  386.     if (clip_flag == F_normal_clip) hits = 1;
  387.         else hits = 100 ;
  388.     break ;
  389.  
  390. case F_triple:
  391.     if (object[O_rifle][J_property] >= 3) {
  392.         printf("Bam! Bam! Bam! \n\n") ;
  393.         object[O_rifle][J_property] -= 3 ;
  394.         if (clip_flag == F_normal_clip) hits = 3;
  395.             else hits = 300 ;
  396.     }
  397.     else {
  398.         for (i = 1; i <= object[O_rifle][J_property]; i++) 
  399.             printf("Bam! ") ;
  400.             printf("\n\nYou've run out of bullets. \n\n") ;
  401.         if (clip_flag == F_normal_clip) 
  402.             hits = object[O_rifle][J_property];
  403.             else hits = object[O_rifle][J_property]*100 ;
  404.         object[O_rifle][J_property] = 0 ;
  405.     }
  406.     break ;
  407.  
  408. case F_auto:
  409.     if (object[O_rifle][J_property] >= 30) {
  410.         for (i = 1; i <= 3; i++) 
  411. printf("Bam! Bam! Bam! Bam! Bam! Bam! Bam! Bam! Bam! Bam! \n") ;
  412.         object[O_rifle][J_property] -= 30 ;
  413.         hits = 30;
  414.     }
  415.     else {
  416.         i_10 = object[O_rifle][J_property]/10 ;
  417.         i_fract = object[O_rifle][J_property]-(i_10*10) ;
  418.         for (i = 1; i <= i_10; i++) 
  419. printf("Bam! Bam! Bam! Bam! Bam! Bam! Bam! Bam! Bam! Bam! \n") ;
  420.         for (i = 1; i <= i_fract; i++) 
  421.             printf("Bam! ") ;
  422.             printf("\n\nYou've run out of bullets. \n") ;
  423.         if (clip_flag == F_normal_clip) 
  424.             hits = object[O_rifle][J_property];
  425.             else hits = object[O_rifle][J_property]*100 ;
  426.         object[O_rifle][J_property] = 0 ;
  427.     }
  428.     printf("\n") ;
  429.     break ;
  430. }
  431.  
  432.  
  433. /* Target Seen block */
  434. if (sw_see) {
  435.     /* Toggle the hurt switch if this is the first hit */
  436.     mnstr = (monster_start + j_point) ;  /* point to the monster */
  437.     if (mnstr->Hits == 0)  sw_hurt = FALSE ;
  438.     mnstr->Hits += hits ;
  439.  
  440.     switch(target_k_flag) {
  441.     case V_ned:
  442. printf("Ned Kelly keels over dead.  His body suddenly glows a bright ");
  443. printf("orange like it\nis being consummed by a heatless flame ");
  444. printf("and then the late Ned Kelly disappears\ninto a puff of ") ;
  445. printf("blue smoke. \n\n") ;
  446. printf("By the way, the recently deceased bushranger ***was*** ");
  447. printf("wearing iron body\narmour.  However thin sheets of iron ");
  448. printf("would just barely work against nineteenth\ncentury firearms ");
  449. printf("at long range.  Against a modern infantry rifle, Ned's\n");
  450. printf("armour offered about as much protection as a dunny paper ");
  451. printf("bandage. \n") ;
  452.         Ned->Location = B_destroyed ;
  453.         Ned->Status = F_asleep ;
  454.         monster_flag = F_no_monster ;
  455.         room[R_hideout][M_monster] = 0 ;
  456.     
  457.         /* create Ned Kelly's silver teapot */
  458.         ++room[R_hideout][M_obj_cnt] ;
  459.         object[O_teapot][J_loc] = R_hideout ;
  460.         return ;
  461.  
  462.     /* shoot the drop bear */
  463.     case V_bear:
  464.         if (mnstr->Hits < 30) {
  465.             /* Bear freaks out from being shot too much */
  466.             if (sw_hurt && (mnstr->Hits >= 10)) {
  467. printf("The drop bear has been shot at so many times, that it ");
  468. printf("has gone mad\n") ;
  469. printf("with rage.  It leaps three metres and rips out your ") ;
  470. printf("throat with a\n");
  471. printf("single swish of its claws.  You die instantly. \n") ;
  472.                 ender(F_died) ;
  473.             }
  474.  
  475.             if (mnstr->Hits == 1) {
  476. printf("Your bullet hit the drop bear causing it to howl in ");
  477. printf("anguish.  However drop\n");
  478. printf("bears are pretty tough and just one bullet isn't ");
  479. printf("going to kill it.\n") ;
  480.             }
  481.             else {
  482.                 if (!sw_hurt) {
  483. printf("You've hit the drop bear and it is bleeding fairly ");
  484. printf("heavily.\n");
  485. printf("Unfortunately it is still alive and kicking and wants ") ;
  486. printf("your blood \n");
  487. printf("in payment for its.\n") ;
  488.                     sw_hurt = TRUE ;
  489.                 }
  490.                 else {
  491. printf("You've hit the drop bear again.  It is weakening but still ");
  492. printf("alive.\n");
  493.                 }
  494.             }
  495.             monster_flag = F_wounded ;
  496.             return ;
  497.         }
  498.  
  499.         if (rifle_flag == F_single) {
  500. printf("That last bullet was the straw which broke the drop ") ;
  501. printf("bear's back.\n") ;
  502. printf("The blasted thing is finally dead! \n") ;
  503.         }
  504.         else {
  505. printf("The bullets riddled the drop bear with holes, killing it ") ;
  506. printf("instantly. \n") ; 
  507.         }
  508. printf("Suddenly the drop bear's corpse turns into a cloud of greasy ");
  509. printf("blue smoke,\n") ;
  510. printf("which floats away without a trace.\n") ;
  511.         sw_hurt = FALSE ;
  512.         mnstr->Location = B_destroyed ;
  513.         mnstr->Status = F_asleep ;
  514.         monster_flag = F_no_monster ;
  515.         room[n][M_monster] = 0 ;
  516.         return ;
  517.  
  518.         /* shoot the mutant wombat */
  519.     case V_wombat:
  520.         if (Wombat->Hits < 300) {
  521.             if (Wombat->Hits == 1) {
  522. printf("Your bullet hit the wombat causing it some minor discomfort.");
  523. printf("  Judging from its \n");
  524. printf("behavior, killing this beast is going to be tough! \n") ;
  525.             }
  526.             else {
  527.                 if (!sw_hurt) {
  528. printf("You've hit the wombat and got its attention ") ;
  529. printf("but you've not\n");
  530. printf("seriously wounded it.  In fact, you've made it more fierce ");
  531. printf("than before.\n");
  532.                     sw_hurt = TRUE ;
  533.                 }
  534.                 else {
  535. printf("You've hit the wombat again, but it is still going ");
  536. printf("strong.\n");
  537.                 }
  538.             }
  539.             monster_flag = F_wounded ;
  540.             return ;
  541.         }
  542.  
  543.         if (rifle_flag == F_single) {
  544. printf("That last bullet was the straw which broke the ") ;
  545. printf("wombat's back.\n") ;
  546. printf("The blasted thing is finally dead!\n\n") ;
  547.         }
  548.         else {
  549. printf("The bullets did the trick on the wretched thing.  It's ") ;
  550. printf("dead as a doornail.\n\n") ;
  551.         }
  552. printf("Suddenly the wombat's corpse starts to glow with an intense");
  553. printf(" white light.\n") ;
  554. printf("There is then a crackling sound as its body starts to burn.");
  555. printf("  You can\n");
  556. printf("smell the stench of burning hair.  Then the white light");
  557. printf(" begins to dim,\n");
  558. printf("leaving no trace left of the once formidable monster.\n");
  559.         sw_hurt = FALSE ;
  560.         Wombat->Location = B_destroyed ;
  561.         Wombat->Status = F_asleep ;
  562.         monster_flag = F_no_monster ;
  563.         room[n][M_monster] = 0 ;
  564.         return ;
  565.  
  566.     /* shoot the hoop snake */
  567.     case V_snake:
  568.         if ((rifle_flag == F_single)&&
  569.             (mnstr->Hits < 3)) {
  570.             if (mnstr->Hits == 1) {
  571. printf("Your bullet hit the hoop snake.  However the hoop snake's ");
  572. printf("thick scales \n");
  573. printf("slowed the bullet down.  The hoop snake is now hissing ");
  574. printf("furiously. \n") ;
  575.             }
  576.             else {
  577. printf("You've hit the hoop snake again, and it's hurting.  However ");
  578. printf("it is still \n");
  579. printf("alive and full of venom. \n") ;
  580.             }
  581.             monster_flag = F_wounded ;
  582.             return ;
  583.         }
  584.  
  585.         if (rifle_flag == F_single) {
  586. printf("The bullet hit the hoop snake finishing the horrible ") ;
  587. printf("creature off. \n") ;
  588.         }
  589.         else {
  590. printf("The bullets hit the hoop snake splatting it into a mass of ") ;
  591. printf("mince meat. \n") ; 
  592.         }
  593. printf("Suddenly the bullet holed snake glows red and whooshes ");
  594. printf("into a cloud \n") ;
  595. printf("steam, leaving no traces behind.\n\n") ;
  596.         mnstr->Location = B_destroyed ;
  597.         mnstr->Status = F_asleep ;
  598.         monster_flag = F_no_monster ;
  599.         room[n][M_monster] = 0 ;
  600.         return ;
  601.  
  602.     case V_can:
  603.     case V_beer:
  604.     case V_fourex:
  605.     case V_Fourex:
  606. printf("The can is hit by a bullet and flies off out of sight.\n");
  607.         object[O_can][J_loc] = B_destroyed ;
  608.         return;
  609.  
  610.  
  611.     case V_bottle:
  612.     case V_lager:
  613. printf("It is hit by a bullet and shatters into a million pieces.\n");
  614.         object[O_bottle][J_loc] = B_destroyed ;
  615.         return;
  616.  
  617.     } /* end of target switch group */
  618. } /* end of the "target seen" block */
  619.  
  620. /* There was no target specified so the shot was wasted */
  621. if (tag[V_VERB_ONLY]) { 
  622. printf("You didn't specify a target. So the rifle was pointed\n") ;
  623. printf("in a random direction and the ammunition wasted.\n") ;
  624. }
  625. else 
  626. printf("Except for wasting ammunition, nothing much happened.\n") ;
  627. return ;
  628.  
  629. } /* --- end of the 'killer' subroutine --- */
  630.  
  631.