home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / games / trek / ram.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-04-08  |  3.3 KB  |  102 lines

  1. /*
  2.  * Copyright (c) 1980 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  */
  33.  
  34. #ifndef lint
  35. static char sccsid[] = "@(#)ram.c    5.5 (Berkeley) 6/1/90";
  36. #endif /* not lint */
  37.  
  38. # include    "trek.h"
  39.  
  40. /*
  41. **  RAM SOME OBJECT
  42. **
  43. **    You have run into some sort of object.  It may be a Klingon,
  44. **    a star, or a starbase.  If you run into a star, you are really
  45. **    stupid, because there is no hope for you.
  46. **
  47. **    If you run into something else, you destroy that object.  You
  48. **    also rack up incredible damages.
  49. */
  50.  
  51. ram(ix, iy)
  52. int    ix, iy;
  53. {
  54.     register int        i;
  55.     register char        c;
  56.  
  57.     printf("\07RED ALERT\07: collision imminent\n");
  58.     c = Sect[ix][iy];
  59.     switch (c)
  60.     {
  61.  
  62.       case KLINGON:
  63.         printf("%s rams Klingon at %d,%d\n", Ship.shipname, ix, iy);
  64.         killk(ix, iy);
  65.         break;
  66.  
  67.       case STAR:
  68.       case INHABIT:
  69.         printf("Yeoman Rand: Captain, isn't it getting hot in here?\n");
  70.         sleep(2);
  71.         printf("Spock: Hull temperature approaching 550 Degrees Kelvin.\n");
  72.         lose(L_STAR);
  73.  
  74.       case BASE:
  75.         printf("You ran into the starbase at %d,%d\n", ix, iy);
  76.         killb(Ship.quadx, Ship.quady);
  77.         /* don't penalize the captain if it wasn't his fault */
  78.         if (!damaged(SINS))
  79.             Game.killb += 1;
  80.         break;
  81.     }
  82.     sleep(2);
  83.     printf("%s heavily damaged\n", Ship.shipname);
  84.  
  85.     /* select the number of deaths to occur */
  86.     i = 10 + ranf(20 * Game.skill);
  87.     Game.deaths += i;
  88.     Ship.crew -= i;
  89.     printf("McCoy: Take it easy Jim; we had %d casualties.\n", i);
  90.  
  91.     /* damage devices with an 80% probability */
  92.     for (i = 0; i < NDEV; i++)
  93.     {
  94.         if (ranf(100) < 20)
  95.             continue;
  96.         damage(i, (2.5 * (franf() + franf()) + 1.0) * Param.damfac[i]);
  97.     }
  98.  
  99.     /* no chance that your shields remained up in all that */
  100.     Ship.shldup = 0;
  101. }
  102.