ram.c 3.3 KB

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