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