|
|
1.1 ! root 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 are permitted provided ! 6: * that: (1) source distributions retain this entire copyright notice and ! 7: * comment, and (2) distributions including binaries display the following ! 8: * acknowledgement: ``This product includes software developed by the ! 9: * University of California, Berkeley and its contributors'' in the ! 10: * documentation or other materials provided with the distribution and in ! 11: * all advertising materials mentioning features or use of this software. ! 12: * Neither the name of the University nor the names of its contributors may ! 13: * be used to endorse or promote products derived from this software without ! 14: * specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 16: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 17: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: */ ! 19: ! 20: #ifndef lint ! 21: static char sccsid[] = "@(#)initquad.c 5.4 (Berkeley) 6/1/90"; ! 22: #endif /* not lint */ ! 23: ! 24: # include "trek.h" ! 25: ! 26: /* ! 27: ** Paramize Quadrant Upon Entering ! 28: ** ! 29: ** A quadrant is initialized from the information held in the ! 30: ** Quad matrix. Basically, everything is just initialized ! 31: ** randomly, except for the starship, which goes into a fixed ! 32: ** sector. ! 33: ** ! 34: ** If there are Klingons in the quadrant, the captain is informed ! 35: ** that the condition is RED, and he is given a chance to put ! 36: ** his shields up if the computer is working. ! 37: ** ! 38: ** The flag `f' is set to disable the check for condition red. ! 39: ** This mode is used in situations where you know you are going ! 40: ** to be docked, i.e., abandon() and help(). ! 41: */ ! 42: ! 43: initquad(f) ! 44: int f; ! 45: { ! 46: register int i, j; ! 47: int rx, ry; ! 48: int nbases, nstars; ! 49: register struct quad *q; ! 50: int nholes; ! 51: ! 52: q = &Quad[Ship.quadx][Ship.quady]; ! 53: ! 54: /* ignored supernova'ed quadrants (this is checked again later anyway */ ! 55: if (q->stars < 0) ! 56: return; ! 57: Etc.nkling = q->klings; ! 58: nbases = q->bases; ! 59: nstars = q->stars; ! 60: nholes = q->holes; ! 61: ! 62: /* have we blundered into a battle zone w/ shields down? */ ! 63: if (Etc.nkling > 0 && !f) ! 64: { ! 65: printf("Condition RED\n"); ! 66: Ship.cond = RED; ! 67: if (!damaged(COMPUTER)) ! 68: shield(1); ! 69: } ! 70: ! 71: /* clear out the quadrant */ ! 72: for (i = 0; i < NSECTS; i++) ! 73: for (j = 0; j < NSECTS; j++) ! 74: Sect[i][j] = EMPTY; ! 75: ! 76: /* initialize Enterprise */ ! 77: Sect[Ship.sectx][Ship.secty] = Ship.ship; ! 78: ! 79: /* initialize Klingons */ ! 80: for (i = 0; i < Etc.nkling; i++) ! 81: { ! 82: sector(&rx, &ry); ! 83: Sect[rx][ry] = KLINGON; ! 84: Etc.klingon[i].x = rx; ! 85: Etc.klingon[i].y = ry; ! 86: Etc.klingon[i].power = Param.klingpwr; ! 87: Etc.klingon[i].srndreq = 0; ! 88: } ! 89: compkldist(1); ! 90: ! 91: /* initialize star base */ ! 92: if (nbases > 0) ! 93: { ! 94: sector(&rx, &ry); ! 95: Sect[rx][ry] = BASE; ! 96: Etc.starbase.x = rx; ! 97: Etc.starbase.y = ry; ! 98: } ! 99: ! 100: /* initialize inhabited starsystem */ ! 101: if (q->qsystemname != 0) ! 102: { ! 103: sector(&rx, &ry); ! 104: Sect[rx][ry] = INHABIT; ! 105: nstars -= 1; ! 106: } ! 107: ! 108: /* initialize black holes */ ! 109: for (i = 0; i < nholes; i++) ! 110: { ! 111: sector(&rx, &ry); ! 112: Sect[rx][ry] = HOLE; ! 113: } ! 114: ! 115: /* initialize stars */ ! 116: for (i = 0; i < nstars; i++) ! 117: { ! 118: sector(&rx, &ry); ! 119: Sect[rx][ry] = STAR; ! 120: } ! 121: Move.newquad = 1; ! 122: } ! 123: ! 124: ! 125: sector(x, y) ! 126: int *x, *y; ! 127: { ! 128: register int i, j; ! 129: ! 130: do ! 131: { ! 132: i = ranf(NSECTS); ! 133: j = ranf(NSECTS); ! 134: } while (Sect[i][j] != EMPTY); ! 135: *x = i; ! 136: *y = j; ! 137: return; ! 138: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.