]> git.cameronkatri.com Git - bsdgames-darwin.git/blob - warp/play.c
games: remove trailing whitespace in *.c and *.h
[bsdgames-darwin.git] / warp / play.c
1 /* Header: play.c,v 7.0.1.1 86/10/16 10:52:39 lwall Exp */
2
3 /* Log: play.c,v
4 * Revision 7.0.1.1 86/10/16 10:52:39 lwall
5 * Added Damage. Fixed random bugs.
6 *
7 * Revision 7.0 86/10/08 15:13:09 lwall
8 * Split into separate files. Added amoebas and pirates.
9 *
10 */
11
12 #include "EXTERN.h"
13 #include "warp.h"
14 #include "bang.h"
15 #include "score.h"
16 #include "object.h"
17 #include "move.h"
18 #include "term.h"
19 #include "them.h"
20 #include "us.h"
21 #include "util.h"
22 #include "weapon.h"
23 #include "INTERN.h"
24 #include "play.h"
25
26 void
27 play_init(void)
28 {
29 ;
30 }
31
32 void
33 play(void)
34 {
35 bool done = false;
36 OBJECT *curobj;
37 OBJECT *to;
38 int i;
39 int x;
40 int y;
41
42 display_status();
43 #ifdef TIOCOUTQ
44 while (output_pending() > charsperhalfsec)
45 sleep(1); /* allow buffers to empty */
46 #endif
47 sleep(3);
48 do {
49 timer++;
50 nxtbang = 0;
51 banging = false;
52 display_status();
53 #ifdef TIOCOUTQ
54 while (output_pending() > charsperhalfsec)
55 sleep(1);
56 #endif
57 if (lowspeed)
58 roundsleep(2);
59 else
60 roundsleep(1);
61 if (ent) {
62 evely = ent->vely;
63 evelx = ent->velx;
64 if (cloaking && ent->energy >= 250 && !damflag[NOCLOAKING]) {
65 if (!rand_mod(300)) {
66 damage++;
67 damflag[NOCLOAKING] = rand_mod(smarts+1)+2;
68 }
69 ent->energy -= ent->energy/40;
70 }
71 else
72 cloaking = false;
73 cloaked = cloaking;
74 }
75 if (base) {
76 bvely = base->vely;
77 bvelx = base->velx;
78 }
79 get_commands(&done);
80 if (done)
81 break;
82 their_smarts();
83 apolloflag = 0;
84 if (ent) {
85 if (numapollos) {
86 if (numstars) {
87 if (realapollo) {
88 if (lookfor(realapollo->posy,realapollo->posx,
89 Enterprise)) {
90 apolloflag = 1;
91 }
92 }
93 else if (lookfor(root.next->posy,root.next->posx,
94 Enterprise)) {
95 apolloflag = 1;
96 realapollo = root.next;
97 mvaddch(realapollo->posy+1,realapollo->posx*2,
98 'A');
99 realapollo->image = 'A';
100 realapollo->mass = 6000;
101 inumapollos = 1;
102 numenemies++;
103 inumenemies++;
104 possiblescore += 5000;
105 }
106 if (apolloflag) {
107 if (blast[realapollo->posy][realapollo->posx] <= 32000)
108 evely = evelx = 0;
109 realapollo->energy = 32000;
110 }
111 }
112 else
113 numapollos = 0;
114 }
115 ent->vely = evely;
116 ent->velx = evelx;
117 }
118 if (base) {
119 if (numapollos) {
120 if (numstars) {
121 if (realapollo) {
122 if (lookfor(realapollo->posy,realapollo->posx,
123 Base)) {
124 apolloflag |= 2;
125 }
126 }
127 else if (lookfor(root.next->posy,root.next->posx,
128 Base)) {
129 apolloflag |= 2;
130 realapollo = root.next;
131 mvaddch(realapollo->posy+1,realapollo->posx*2,
132 'A');
133 realapollo->image = 'A';
134 realapollo->mass = 6000;
135 inumapollos = 1;
136 numenemies++;
137 inumenemies++;
138 possiblescore += 5000;
139 }
140 if (apolloflag & 2) {
141 if (blast[realapollo->posy][realapollo->posx] <= 32000)
142 bvely = bvelx = 0;
143 realapollo->energy = 32000;
144 }
145 }
146 else
147 numapollos = 0;
148 }
149 base->vely = bvely;
150 base->velx = bvelx;
151 }
152 if (aretorps) {
153 aretorps = 0;
154 for (i=0;i<2;i++) for (y=0;y<3;y++) for (x=0;x<3;x++) {
155 if ((curobj = isatorp[i][y][x]) != NULL) {
156 to = occupant[(curobj->posy+curobj->vely+YSIZE00)%YSIZE]
157 [(curobj->posx+curobj->velx+XSIZE00)%XSIZE];
158 if (to && !to->vely && !to->velx) {
159 unmake_object(curobj);
160 if (i)
161 btorp++;
162 else
163 etorp++;
164 }
165 isatorp[i][y][x]=0;
166 }
167 }
168 }
169 move_universe();
170 if (finish) {
171 finish--;
172 if (!finish && (!(numenemies || numos) || (!ent && !base))) {
173 done = true;
174 timer -= 5;
175 }
176 }
177 else if (!banging && (!(numenemies || numos) || (!ent && !base)))
178 finish = 5;
179 } while (!done);
180 }