Merge from vendor branch OPENSSL:
[dragonfly.git] / games / sail / globals.c
CommitLineData
984263bc
MD
1/*
2 * Copyright (c) 1983, 1993
3 * The Regents of the University of California. 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.
1de703da
MD
32 *
33 * @(#)globals.c 8.1 (Berkeley) 5/31/93
34 * $FreeBSD: src/games/sail/globals.c,v 1.3 1999/11/30 03:49:34 billf Exp $
4be74d36 35 * $DragonFly: src/games/sail/globals.c,v 1.3 2006/09/03 17:33:13 pavalos Exp $
984263bc
MD
36 */
37
984263bc
MD
38#include "externs.h"
39
4be74d36
PA
40int mode;
41jmp_buf restart;
42 /* command line flags */
43char debug; /* -D */
44char randomize; /* -x, give first available ship */
45char longfmt; /* -l, print score in long format */
46char nobells; /* -b, don't ring bell before Signal */
47
48 /* other initial modes */
49char issetuid; /* running setuid */
50
984263bc
MD
51struct scenario scene[] = {
52 /*
53 * int winddir;
54 * int windspeed;
55 * int windchange;
56 * int vessels;
4be74d36 57 * const char *name;
984263bc
MD
58 * struct ship ship[NSHIP];
59 */
4be74d36 60 { 5, 3, 5, 2, "Ranger vs. Drake",
984263bc
MD
61 {
62 { "Ranger", specs+0, N_A, 7, 20, 4, 0 },
63 { "Drake", specs+1, N_B, 7, 31, 5, 0 }
4be74d36
PA
64 }},
65 { 1, 3, 6, 2, "The Battle of Flamborough Head",
984263bc
MD
66 {
67 { "Bonhomme Rich", specs+2, N_A, 13, 40, 2, 0 },
68 { "Serapis", specs+3, N_B, 2, 42, 2, 0 }
4be74d36
PA
69 }},
70 { 5, 5, 5, 10, "Arbuthnot and Des Touches",
984263bc
MD
71 {
72 { "America", specs+4, N_B, 7, 37, 4, 0 },
73 { "Befford", specs+5, N_B, 5, 35, 4, 0 },
74 { "Adamant", specs+6, N_B, 3, 33, 4, 0 },
75 { "London", specs+7, N_B, 1, 31, 4, 0 },
76 { "Royal Oak", specs+8, N_B, -1, 29, 4, 0 },
77 { "Neptune", specs+9, N_F, 6, 44, 4, 0 },
78 { "Duc Bougogne", specs+10, N_F, 8, 46, 4, 0 },
79 { "Conquerant", specs+48, N_F, 10, 48, 4, 0 },
80 { "Provence", specs+11, N_F, 12, 50, 4, 0 },
81 { "Romulus", specs+12, N_F, 20, 58, 4, 0 }
4be74d36
PA
82 }},
83 { 1, 3, 5, 10, "Suffren and Hughes",
984263bc
MD
84 {
85 { "Monmouth", specs+52, N_B, 9, 45, 2, 0 },
86 { "Hero", specs+5, N_B, 13, 49, 2, 0 },
87 { "Isis", specs+6, N_B, 12, 48, 2, 0 },
88 { "Superb", specs+50, N_B, 10, 46, 2, 0 },
89 { "Burford", specs+48, N_B, 11, 47, 2, 0 },
90 { "Flamband", specs+13, N_F, 7, 59, 4, 0 },
91 { "Annibal", specs+9, N_F, 4, 56, 4, 0 },
92 { "Severe", specs+11, N_F, 2, 54, 4, 0 },
93 { "Brilliant", specs+49, N_F, -1, 51, 4, 0 },
94 { "Sphinx", specs+51, N_F, -5, 47, 4, 0 }
4be74d36
PA
95 }},
96 { 1, 3, 4, 2, "Nymphe vs. Cleopatre",
984263bc
MD
97 {
98 { "Nymphe", specs+14, N_B, 13, 30, 2, 0 },
99 { "Cleopatre", specs+15, N_F, 3, 41, 2, 0 }
4be74d36
PA
100 }},
101 { 1, 3, 5, 2, "Mars vs. Hercule",
984263bc
MD
102 {
103 { "Mars", specs+16, N_B, 13, 30, 2, 0 },
104 { "Hercule", specs+17, N_F, 3, 41, 2, 0 }
4be74d36
PA
105 }},
106 { 5, 3, 5, 2, "Ambuscade vs. Baionnaise",
984263bc
MD
107 {
108 { "Ambuscade", specs+18, N_B, 13, 30, 2, 0 },
109 { "Baionnaise", specs+19, N_F, 3, 41, 2, 0 }
4be74d36
PA
110 }},
111 { 1, 5, 6, 2, "Constellation vs. Insurgent",
984263bc
MD
112 {
113 { "Constellation", specs+20, N_A, 9, 50, 8, 0 },
114 { "Insurgent", specs+22, N_F, 4, 24, 2, 0 }
4be74d36
PA
115 }},
116 { 1, 3, 5, 2, "Constellation vs. Vengeance",
984263bc
MD
117 {
118 { "Constellation", specs+20, N_A, 12, 40, 2, 0 },
119 { "Vengeance", specs+21, N_F, 1, 43, 2, 0 }
4be74d36
PA
120 }},
121 { 1, 3, 6, 10, "The Battle of Lissa",
984263bc
MD
122 {
123 { "Amphion", specs+23, N_B, 8, 50, 4, 0 },
124 { "Active", specs+24, N_B, 6, 48, 4, 0 },
125 { "Volage", specs+25, N_B, 4, 46, 4, 0 },
126 { "Cerberus", specs+26, N_B, 2, 44, 4, 0 },
127 { "Favorite", specs+27, N_F, 9, 34, 2, 0 },
128 { "Flore", specs+21, N_F, 13, 39, 2, 0 },
129 { "Danae", specs+64, N_F, 15, 37, 2, 0 },
130 { "Bellona", specs+28, N_F, 17, 35, 2, 0 },
131 { "Corona", specs+29, N_F, 12, 31, 2, 0 },
132 { "Carolina", specs+30, N_F, 15, 28, 2, 0 }
4be74d36
PA
133 }},
134 { 2, 5, 6, 2, "Constitution vs. Guerriere",
984263bc
MD
135 {
136 { "Constitution", specs+31, N_A, 7, 35, 1, 0 },
137 { "Guerriere", specs+32, N_B, 7, 47, 4, 0 }
4be74d36
PA
138 }},
139 { 1, 3, 5, 2, "United States vs. Macedonian",
984263bc
MD
140 {
141 { "United States", specs+33, N_A, 1, 52, 6, 0 },
142 { "Macedonian", specs+34, N_B, 14, 40, 1, 0 }
4be74d36
PA
143 }},
144 { 1, 3, 6, 2, "Constitution vs. Java",
984263bc
MD
145 {
146 { "Constitution", specs+31, N_A, 1, 40, 2, 0 },
147 { "Java", specs+35, N_B, 11, 40, 2, 0 }
4be74d36
PA
148 }},
149 { 1, 3, 5, 2, "Chesapeake vs. Shannon",
984263bc
MD
150 {
151 { "Chesapeake", specs+36, N_A, 13, 40, 2, 0 },
152 { "Shannon", specs+37, N_B, 1, 42, 2, 0 }
4be74d36
PA
153 }},
154 { 1, 1, 6, 5, "The Battle of Lake Erie",
984263bc
MD
155 {
156 { "Lawrence", specs+38, N_A, 4, 55, 8, 0 },
157 { "Niagara", specs+42, N_A, 7, 61, 8, 0 },
158 { "Lady Prevost", specs+39, N_B, 4, 25, 2, 0 },
159 { "Detroit", specs+40, N_B, 7, 22, 2, 0 },
160 { "Q. Charlotte", specs+41, N_B, 10, 19, 2, 0 }
4be74d36
PA
161 }},
162 { 1, 1, 5, 2, "Wasp vs. Reindeer",
984263bc
MD
163 {
164 { "Wasp", specs+42, N_A, 3, 41, 2, 0 },
165 { "Reindeer", specs+43, N_B, 10, 48, 2, 0 }
4be74d36
PA
166 }},
167 { 1, 2, 5, 3, "Constitution vs. Cyane and Levant",
984263bc
MD
168 {
169 { "Constitution", specs+31, N_A, 10, 45, 2, 0 },
170 { "Cyane", specs+44, N_B, 3, 37, 2, 0 },
171 { "Levant", specs+45, N_B, 5, 35, 2, 0 }
4be74d36
PA
172 }},
173 { 5, 5, 5, 3, "Pellew vs. Droits de L'Homme",
984263bc
MD
174 {
175 { "Indefatigable", specs+46, N_B, 12, 45, 6, 0 },
176 { "Amazon", specs+47, N_B, 9, 48, 6, 0 },
177 { "Droits L'Hom", specs+48, N_F, 3, 28, 5, 0 }
4be74d36
PA
178 }},
179 { 2, 2, 3, 10, "Algeciras",
984263bc
MD
180 {
181 { "Caesar", specs+49, N_B, 7, 70, 6, 0 },
182 { "Pompee", specs+50, N_B, 5, 72, 6, 0 },
183 { "Spencer", specs+5, N_B, 3, 74, 6, 0 },
184 { "Hannibal", specs+7, N_B, 1, 76, 6, 0 },
185 { "Real-Carlos", specs+53, N_S, 9, 20, 3, 0 },
186 { "San Fernando", specs+54, N_S, 11, 16, 3, 0 },
187 { "Argonauta", specs+55, N_S, 10, 14, 4, 0 },
188 { "San Augustine", specs+56, N_S, 6, 22, 4, 0 },
189 { "Indomptable", specs+51, N_F, 7, 23, 5, 0 },
190 { "Desaix", specs+52, N_F, 7, 27, 7, 0 }
4be74d36
PA
191 }},
192 { 5, 3, 6, 7, "Lake Champlain",
984263bc
MD
193 {
194 { "Saratoga", specs+60, N_A, 8, 10, 1, 0 },
195 { "Eagle", specs+61, N_A, 9, 13, 2, 0 },
196 { "Ticonderoga", specs+62, N_A, 12, 17, 3, 0 },
197 { "Preble", specs+63, N_A, 14, 20, 2, 0 },
198 { "Confiance", specs+57, N_B, 4, 70, 6, 0 },
199 { "Linnet", specs+58, N_B, 7, 68, 6, 0 },
200 { "Chubb", specs+59, N_B, 10, 65, 6, 0 }
4be74d36
PA
201 }},
202 { 5, 3, 6, 4, "Last Voyage of the USS President",
984263bc
MD
203 {
204 { "President", specs+67, N_A, 12, 42, 5, 0 },
205 { "Endymion", specs+64, N_B, 5, 42, 5, 0 },
206 { "Pomone", specs+65, N_B, 7, 82, 6, 0 },
207 { "Tenedos", specs+66, N_B, 7, -1, 4, 0 }
4be74d36
PA
208 }},
209 { 7, 5, 5, 2, "Hornblower and the Natividad",
984263bc
MD
210 {
211 { "Lydia", specs+68, N_B, 12, 40, 2, 0 },
212 { "Natividad", specs+69, N_S, 2, 40, 4, 0 }
4be74d36
PA
213 }},
214 { 1, 3, 6, 2, "Curse of the Flying Dutchman",
984263bc
MD
215 {
216 { "Piece of Cake", specs+19, N_S, 7, 40, 2, 0 },
217 { "Flying Dutchy", specs+71, N_F, 7, 41, 1, 0 }
4be74d36
PA
218 }},
219 { 1, 4, 1, 4, "The South Pacific",
984263bc
MD
220 {
221 { "USS Scurvy", specs+70, N_A, 7, 40, 1, 0 },
222 { "HMS Tahiti", specs+71, N_B, 12, 60, 1, 0 },
223 { "Australian", specs+18, N_S, 5, 20, 8, 0 },
224 { "Bikini Atoll", specs+63, N_F, 2, 60, 4, 0 }
4be74d36
PA
225 }},
226 { 7, 3, 6, 5, "Hornblower and the battle of Rosas bay",
984263bc
MD
227 {
228 { "Sutherland", specs+5, N_B, 13, 30, 2, 0 },
229 { "Turenne", specs+10, N_F, 9, 35, 6, 0 },
230 { "Nightmare", specs+9, N_F, 7, 37, 6, 0 },
231 { "Paris", specs+53, N_F, 3, 45, 4, 0 },
232 { "Napolean", specs+56, N_F, 1, 40, 6, 0 }
4be74d36
PA
233 }},
234 { 6, 4, 7, 5, "Cape Horn",
984263bc
MD
235 {
236 { "Concord", specs+51, N_A, 3, 20, 4, 0 },
237 { "Berkeley", specs+7, N_A, 5, 50, 5, 0 },
238 { "Thames", specs+71, N_B, 10, 40, 1, 0 },
239 { "Madrid", specs+53, N_S, 13, 60, 8, 0 },
240 { "Musket", specs+10, N_F, 10, 60, 7, 0 }
4be74d36
PA
241 }},
242 { 8, 3, 7, 3, "New Orleans",
984263bc
MD
243 {
244 { "Alligator", specs+71, N_A, 13, 5, 1, 0 },
245 { "Firefly", specs+50, N_B, 10, 20, 8, 0 },
246 { "Cypress", specs+46, N_B, 5, 10, 6, 0 }
4be74d36
PA
247 }},
248 { 5, 3, 7, 3, "Botany Bay",
984263bc
MD
249 {
250 { "Shark", specs+11, N_B, 6, 15, 4, 0 },
251 { "Coral Snake", specs+31, N_F, 3, 30, 6, 0 },
252 { "Sea Lion", specs+33, N_F, 13, 50, 8, 0 }
4be74d36
PA
253 }},
254 { 4, 3, 6, 4, "Voyage to the Bottom of the Sea",
984263bc
MD
255 {
256 { "Seaview", specs+71, N_A, 6, 3, 3, 0 },
257 { "Flying Sub", specs+64, N_A, 8, 3, 3, 0 },
258 { "Mermaid", specs+70, N_B, 2, 5, 5, 0 },
259 { "Giant Squid", specs+53, N_S, 10, 30, 8, 0 }
4be74d36
PA
260 }},
261 { 7, 3, 6, 3, "Frigate Action",
984263bc
MD
262 {
263 { "Killdeer", specs+21, N_A, 7, 20, 8, 0 },
264 { "Sandpiper", specs+27, N_B, 5, 40, 8, 0 },
265 { "Curlew", specs+34, N_S, 10, 60, 8, 0 }
4be74d36
PA
266 }},
267 { 7, 2, 5, 6, "The Battle of Midway",
984263bc
MD
268 {
269 { "Enterprise", specs+49, N_A, 10, 70, 8, 0 },
270 { "Yorktown", specs+51, N_A, 3, 70, 7, 0 },
271 { "Hornet", specs+52, N_A, 6, 70, 7, 0 },
272 { "Akagi", specs+53, N_J, 6, 10, 4, 0 },
273 { "Kaga", specs+54, N_J, 4, 12, 4, 0 },
274 { "Soryu", specs+55, N_J, 2, 14, 4, 0 }
4be74d36
PA
275 }},
276 { 1, 3, 4, 8, "Star Trek",
984263bc
MD
277 {
278 { "Enterprise", specs+76, N_D,-10, 60, 7, 0 },
279 { "Yorktown", specs+77, N_D, 0, 70, 7, 0 },
280 { "Reliant", specs+78, N_D, 10, 70, 7, 0 },
281 { "Galileo", specs+79, N_D, 20, 60, 7, 0 },
282 { "Kobayashi Maru", specs+80, N_K, 0,120, 7, 0 },
283 { "Klingon II", specs+81, N_K, 10,120, 7, 0 },
284 { "Red Orion", specs+82, N_O, 0, 0, 3, 0 },
285 { "Blue Orion", specs+83, N_O, 10, 0, 3, 0 }
4be74d36 286 }}
984263bc
MD
287};
288int nscene = sizeof scene / sizeof (struct scenario);
289
290struct shipspecs specs[] = {
291/* bs fs ta guns hull crew1 crew3 gunR carR rig2 rig4 pts */
292/* class qual crew2 gunL carL rig1 rig3 */
4be74d36
PA
293{/*00*/ 4, 7, 3, 19, 5, 5, 4, 2, 2, 2, 2, 2, 0, 0, 4, 4, 4, 4, 7 },
294{/*01*/ 4, 7, 3, 17, 5, 5, 4, 2, 2, 2, 0, 0, 4, 4, 3, 3, 3, 3, 6 },
295{/*02*/ 3, 5, 2, 42, 4, 7, 4, 2, 2, 2, 2, 2, 0, 0, 5, 5, 5, -1, 11 },
296{/*03*/ 4, 6, 3, 44, 3, 7, 4, 2, 2, 2, 3, 3, 0, 0, 5, 5, 5, 5, 12 },
297{/*04*/ 3, 5, 2, 64, 2, 17, 4, 8, 6, 6, 12, 12, 2, 2, 7, 7, 7, -1, 20 },
298{/*05*/ 3, 5, 2, 74, 2, 20, 4, 8, 8, 8, 16, 16, 2, 2, 7, 7, 7, -1, 26 },
299{/*06*/ 3, 5, 2, 50, 2, 12, 4, 6, 4, 4, 8, 8, 2, 2, 6, 6, 6, -1, 17 },
300{/*07*/ 3, 5, 1, 98, 1, 23, 4, 10, 10, 10, 18, 18, 2, 2, 8, 8, 8, -1, 28 },
301{/*08*/ 3, 5, 2, 74, 2, 20, 4, 8, 8, 8, 16, 16, 2, 2, 7, 7, 7, -1, 26 },
302{/*09*/ 3, 5, 2, 74, 2, 21, 3, 10, 10, 8, 20, 20, 0, 0, 7, 7, 7, -1, 24 },
303{/*10*/ 3, 5, 1, 80, 1, 23, 3, 12, 12, 10, 22, 22, 0, 0, 7, 7, 7, -1, 27 },
304{/*11*/ 3, 5, 2, 64, 2, 18, 3, 8, 8, 6, 12, 12, 0, 0, 7, 7, 7, -1, 18 },
305{/*12*/ 3, 5, 2, 44, 2, 11, 3, 4, 4, 4, 6, 6, 2, 2, 5, 5, 5, -1, 10 },
306{/*13*/ 3, 5, 2, 50, 2, 14, 3, 6, 6, 4, 8, 8, 0, 0, 6, 6, 6, -1, 14 },
307{/*14*/ 4, 6, 3, 36, 3, 11, 4, 4, 4, 2, 4, 4, 2, 2, 5, 5, 5, 5, 11 },
308{/*15*/ 4, 6, 3, 36, 3, 11, 3, 4, 4, 4, 4, 4, 2, 2, 5, 5, 5, 5, 10 },
309{/*16*/ 3, 5, 2, 74, 2, 21, 4, 10, 8, 8, 18, 18, 2, 2, 7, 7, 7, -1, 26 },
310{/*17*/ 3, 5, 2, 74, 2, 21, 3, 10, 10, 8, 20, 20, 2, 2, 7, 7, 7, -1, 23 },
311{/*18*/ 4, 6, 3, 32, 3, 8, 3, 4, 2, 2, 4, 4, 2, 2, 5, 5, 5, 5, 9 },
312{/*19*/ 4, 6, 3, 24, 4, 6, 3, 4, 4, 4, 2, 2, 0, 0, 4, 4, 4, 4, 9 },
313{/*20*/ 4, 7, 3, 38, 4, 14, 5, 6, 4, 4, 4, 4, 6, 6, 5, 5, 5, 5, 17 },
314{/*21*/ 4, 6, 3, 40, 3, 15, 3, 8, 6, 6, 6, 6, 4, 4, 5, 5, 5, 5, 15 },
315{/*22*/ 4, 7, 3, 36, 4, 11, 3, 6, 6, 4, 4, 4, 2, 2, 5, 5, 5, 5, 11 },
316{/*23*/ 4, 6, 3, 32, 3, 11, 5, 4, 4, 2, 4, 4, 2, 2, 5, 5, 5, 5, 13 },
317{/*24*/ 4, 6, 3, 38, 3, 14, 5, 4, 4, 4, 6, 6, 4, 4, 5, 5, 5, 5, 18 },
318{/*25*/ 4, 6, 3, 22, 3, 6, 5, 2, 2, 2, 0, 0, 8, 8, 4, 4, 4, 4, 11 },
319{/*26*/ 4, 6, 3, 32, 3, 11, 5, 4, 4, 2, 4, 4, 2, 2, 5, 5, 5, 5, 13 },
320{/*27*/ 4, 6, 3, 40, 3, 14, 3, 6, 6, 4, 6, 6, 4, 4, 5, 5, 5, 5, 15 },
321{/*28*/ 4, 6, 3, 32, 3, 11, 2, 4, 4, 4, 4, 4, 0, 0, 5, 5, 5, 5, 9 },
322{/*29*/ 4, 6, 3, 40, 3, 14, 2, 6, 6, 4, 6, 6, 4, 4, 5, 5, 5, 5, 12 },
323{/*30*/ 4, 6, 3, 32, 3, 8, 2, 4, 4, 1, 2, 2, 0, 0, 4, 4, 4, 4, 7 },
324{/*31*/ 4, 7, 3, 44, 4, 18, 5, 6, 6, 6, 8, 8, 6, 6, 6, 6, 6, 6, 24 },
325{/*32*/ 4, 6, 3, 38, 3, 14, 4, 4, 4, 2, 6, 6, 4, 4, 5, 5, 5, 5, 15 },
326{/*33*/ 4, 5, 3, 44, 3, 18, 5, 8, 6, 6, 8, 8, 8, 8, 6, 6, 6, 6, 24 },
327{/*34*/ 4, 6, 3, 38, 3, 14, 4, 4, 4, 4, 6, 6, 4, 4, 5, 5, 5, 5, 16 },
328{/*35*/ 4, 7, 3, 38, 4, 14, 4, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 19 },
329{/*36*/ 4, 6, 3, 38, 3, 14, 3, 6, 6, 4, 6, 6, 6, 6, 5, 5, 5, 5, 14 },
330{/*37*/ 4, 6, 3, 38, 3, 14, 5, 6, 4, 4, 6, 6, 6, 6, 5, 5, 5, 5, 17 },
331{/*38*/ 4, 7, 3, 20, 5, 6, 4, 4, 2, 2, 0, 0, 6, 6, 4, 4, 4, 4, 9 },
332{/*39*/ 4, 7, 3, 13, 6, 3, 4, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 5 },
333{/*40*/ 4, 7, 3, 19, 5, 5, 4, 2, 2, 2, 2, 2, 0, 0, 4, 4, 4, 4, 7 },
334{/*41*/ 4, 7, 3, 17, 5, 5, 4, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 6 },
335{/*42*/ 4, 7, 3, 20, 5, 6, 5, 4, 2, 2, 0, 0, 6, 6, 4, 4, 4, 4, 12 },
336{/*43*/ 4, 7, 3, 18, 5, 5, 5, 2, 2, 2, 0, 0, 6, 6, 4, 4, 4, 4, 9 },
337{/*44*/ 4, 7, 3, 24, 5, 6, 4, 4, 2, 2, 0, 0,10,10, 4, 4, 4, 4, 11 },
338{/*45*/ 4, 7, 3, 20, 5, 6, 4, 2, 2, 2, 0, 0, 8, 8, 4, 4, 4, 4, 10 },
339{/*46*/ 4, 6, 3, 44, 3, 11, 5, 4, 4, 4, 4, 4, 2, 2, 5, 5, 5, 5, 14 },
340{/*47*/ 4, 6, 3, 36, 3, 12, 4, 4, 4, 4, 6, 6, 2, 2, 5, 5, 5, 5, 14 },
341{/*48*/ 3, 5, 2, 74, 2, 21, 3, 10, 8, 8, 20, 20, 2, 2, 4, 4, 7, -1, 24 },
342{/*49*/ 3, 5, 2, 80, 2, 24, 4, 10, 8, 8, 20, 20, 2, 2, 8, 8, 8, -1, 31 },
343{/*50*/ 3, 5, 2, 74, 2, 21, 4, 8, 8, 6, 16, 16, 4, 4, 7, 7, 7, -1, 27 },
344{/*51*/ 3, 5, 2, 80, 2, 24, 3, 12, 12, 10, 22, 22, 2, 2, 7, 7, 7, -1, 27 },
345{/*52*/ 3, 5, 2, 74, 2, 21, 3, 10, 10, 8, 20, 20, 2, 2, 7, 7, 7, -1, 24 },
346{/*53*/ 3, 5, 1, 112, 1, 27, 2, 12, 12, 12, 24, 24, 0, 0, 9, 9, 9, -1, 27 },
347{/*54*/ 3, 5, 1, 96, 1, 24, 2, 12, 12, 10, 20, 20, 0, 0, 8, 8, 8, -1, 24 },
348{/*55*/ 3, 5, 2, 80, 2, 23, 2, 10, 10, 8, 20, 20, 0, 0, 7, 7, 7, -1, 23 },
349{/*56*/ 3, 5, 2, 74, 2, 21, 2, 10, 8, 8, 16, 16, 4, 4, 7, 7, 7, -1, 20 },
350{/*57*/ 4, 6, 3, 37, 3, 12, 4, 4, 4, 2, 6, 6, 4, 4, 5, 5, 5, 5, 14 },
351{/*58*/ 4, 7, 3, 16, 5, 5, 5, 2, 2, 2, 0, 0, 4, 4, 4, 4, 4, 4, 10 },
352{/*59*/ 4, 7, 3, 11, 6, 3, 4, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 5 },
353{/*60*/ 4, 7, 3, 26, 5, 6, 4, 4, 2, 2, 2, 2, 6, 6, 4, 4, 4, 4, 12 },
354{/*61*/ 4, 7, 3, 20, 5, 6, 4, 4, 2, 2, 0, 0, 6, 6, 4, 4, 4, 4, 11 },
355{/*62*/ 4, 7, 3, 17, 5, 5, 4, 2, 2, 2, 0, 0, 6, 6, 4, 4, 4, 4, 9 },
356{/*63*/ 4, 7, 3, 7, 6, 3, 4, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 4 },
357{/*64*/ 4, 6, 3, 40, 3, 15, 4, 4, 4, 4, 8, 8, 6, 6, 5, 5, 5, 5, 17 },
358{/*65*/ 4, 6, 3, 44, 3, 15, 4, 8, 8, 6, 10, 10, 2, 2, 6, 6, 6, 6, 20 },
359{/*66*/ 4, 6, 3, 38, 3, 14, 4, 4, 4, 4, 6, 6, 6, 6, 5, 5, 5, 5, 15 },
360{/*67*/ 4, 5, 3, 44, 3, 18, 5, 8, 6, 6, 8, 8, 8, 8, 6, 6, 6, 6, 24 },
361{/*68*/ 4, 6, 3, 36, 3, 9, 5, 4, 4, 2, 4, 4, 2, 2, 5, 5, 5, 5, 13 },
362{/*69*/ 3, 5, 2, 50, 2, 14, 2, 6, 6, 6, 8, 8, 0, 0, 6, 6, 6, -1, 14 },
363{/*70*/ 3, 5, 1, 136, 1, 30, 1, 8, 14, 14, 28, 28, 0, 0, 9, 9, 9, -1, 27 },
364{/*71*/ 3, 5, 1, 120, 1, 27, 5, 16, 14, 14, 28, 28, 2, 2, 9, 9, 9, -1, 43 },
365{/*72*/ 3, 5, 1, 120, 2, 21, 5, 15, 17, 15, 25, 25, 7, 7, 9, 9, 9, -1, 36 },
366{/*73*/ 3, 5, 1, 90, 3, 18, 4, 13, 15, 13, 20, 20, 6, 6, 5, 5, 5, 5, 28 },
367{/*74*/ 4, 7, 3, 6, 6, 3, 4, 2, 2, 2, 20, 20, 6, 6, 2, 2, 3, 3, 5 },
368{/*75*/ 3, 5, 1, 110, 2, 20, 4, 14, 15, 11, 26, 26, 8, 8, 7, 8, 9, -1, 34 },
369{/*76*/ 4, 7, 3, 450, 1, 99, 5, 50, 40, 40, 50, 50,25,25, 9, 9, 9, -1, 75 },
370{/*77*/ 4, 7, 3, 450, 1, 99, 5, 50, 40, 40, 50, 50,25,25, 9, 9, 9, -1, 75 },
371{/*78*/ 4, 7, 3, 450, 1, 99, 5, 50, 40, 40, 50, 50,25,25, 9, 9, 9, -1, 75 },
372{/*79*/ 4, 7, 3, 450, 1, 99, 5, 50, 40, 40, 50, 50,25,25, 9, 9, 9, -1, 75 },
373{/*80*/ 4, 7, 3, 450, 1, 99, 5, 50, 40, 40, 50, 50,25,25, 9, 9, 9, -1, 75 },
374{/*81*/ 4, 7, 3, 450, 1, 99, 5, 50, 40, 40, 50, 50,25,25, 9, 9, 9, -1, 75 },
375{/*82*/ 4, 7, 3, 450, 1, 99, 5, 50, 40, 40, 50, 50,25,25, 9, 9, 9, -1, 75 },
376{/*83*/ 4, 7, 3, 450, 1, 99, 5, 50, 40, 40, 50, 50,25,25, 9, 9, 9, -1, 75 }
984263bc
MD
377/* bs fs ta guns hull crew1 crew3 gunR carR rig2 rig4 pts */
378/* class qual crew2 gunL carL rig1 rig3 */
379};
380
4be74d36
PA
381struct scenario *cc; /* the current scenario */
382struct ship *ls; /* &cc->ship[cc->vessels] */
383
984263bc
MD
384struct windeffects WET[7][6] = {
385 { {9,9,9,9}, {9,9,9,9}, {9,9,9,9}, {9,9,9,9}, {9,9,9,9}, {9,9,9,9} },
386 { {3,2,2,0}, {3,2,1,0}, {3,2,1,0}, {3,2,1,0}, {2,1,0,0}, {2,1,0,0} },
387 { {1,1,1,0}, {1,1,0,0}, {1,0,0,0}, {1,0,0,0}, {1,0,0,0}, {1,0,0,0} },
388 { {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} },
389 { {0,0,0,0}, {1,0,0,0}, {1,1,0,0}, {1,1,0,0}, {2,2,1,0}, {2,2,1,0} },
390 { {1,0,0,0}, {1,1,0,0}, {1,1,1,0}, {1,1,1,0}, {3,2,2,0}, {3,2,2,0} },
391 { {2,1,1,0}, {3,2,1,0}, {3,2,1,0}, {3,2,1,0}, {3,3,2,0}, {3,3,2,0} }
392};
393
394struct Tables RigTable[11][6] = {
395 { {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,1}, {0,0,1,0} },
396 { {0,0,0,0}, {0,0,0,0}, {0,0,0,1}, {0,0,1,0}, {1,0,0,1}, {0,1,1,1} },
397 { {0,0,0,0}, {0,0,0,1}, {0,0,1,1}, {0,1,0,1}, {0,1,0,1}, {1,0,1,2} },
398 { {0,0,0,0}, {0,0,1,1}, {0,1,0,1}, {0,0,0,2}, {0,1,0,2}, {1,0,1,2} },
399 { {0,1,0,1}, {1,0,0,1}, {0,1,1,2}, {0,1,0,2}, {0,0,1,3}, {1,0,1,4} },
400 { {0,0,1,1}, {0,1,0,2}, {1,0,0,3}, {0,1,1,3}, {1,0,0,4}, {1,1,1,4} },
401 { {0,0,1,2}, {0,1,1,2}, {1,1,0,3}, {0,1,0,4}, {1,0,0,4}, {1,0,1,5} },
402 { {0,0,1,2}, {0,1,0,3}, {1,1,0,3}, {1,0,2,4}, {0,2,1,5}, {2,1,0,5} },
403 { {0,2,1,3}, {1,0,0,3}, {2,1,0,4}, {0,1,1,4}, {0,1,0,5}, {1,0,2,6} },
404 { {1,1,0,4}, {1,0,1,4}, {2,0,0,5}, {0,2,1,5}, {0,1,2,6}, {0,2,0,7} },
405 { {1,0,1,5}, {0,2,0,6}, {1,2,0,6}, {1,1,1,6}, {2,0,2,6}, {1,1,2,7} }
406};
407struct Tables HullTable[11][6] = {
408 { {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {1,0,0,0}, {0,1,0,0} },
409 { {0,0,0,0}, {0,0,0,0}, {0,1,0,0}, {1,1,0,0}, {1,0,1,0}, {1,0,1,1} },
410 { {0,1,0,0}, {1,0,0,0}, {1,1,0,0}, {1,0,1,0}, {1,0,1,1}, {2,1,0,0} },
411 { {0,1,1,0}, {1,0,0,0}, {1,1,1,0}, {2,0,0,1}, {2,0,1,0}, {2,2,0,0} },
412 { {0,1,1,0}, {1,0,0,1}, {2,1,0,1}, {2,2,1,0}, {3,0,1,0}, {3,1,0,0} },
413 { {1,1,1,0}, {2,0,2,1}, {2,1,1,0}, {2,2,0,0}, {3,1,0,1}, {3,1,1,0} },
414 { {1,2,2,0}, {2,0,2,1}, {2,1,0,1}, {2,2,0,0}, {3,1,1,0}, {4,2,1,0} },
415 { {2,1,1,0}, {2,0,1,1}, {3,2,2,0}, {3,2,0,0}, {4,2,1,0}, {4,2,1,1} },
416 { {2,1,2,0}, {3,1,1,1}, {3,2,2,0}, {4,2,1,0}, {4,1,0,2}, {4,2,2,0} },
417 { {2,3,1,0}, {3,2,2,0}, {3,2,2,1}, {4,2,2,0}, {4,1,0,3}, {5,1,2,0} },
418 { {2,2,4,0}, {3,3,1,1}, {4,2,1,1}, {5,1,0,2}, {5,1,2,1}, {6,2,2,0} },
419};
420
421char AMMO[9][4] = {
422 { -1, 1, 0, 1 },
423 { -1, 1, 0, 1 },
424 { -1, 1, 0, 1 },
425 { -2, 1, 0, 2 },
426 { -2, 2, 0, 2 },
427 { -2, 2, 0, 2 },
428 { -3, 2, 0, 2 },
429 { -3, 2, 0, 3 },
430 { -3, 2, 0, 3 }
431};
432
433char HDT[9][10] = {
434 { 1, 0,-1,-2,-3,-3,-4,-4,-4,-4 },
435 { 1, 1, 0,-1,-2,-2,-3,-3,-3,-3 },
436 { 2, 1, 0,-1,-2,-2,-3,-3,-3,-3 },
437 { 2, 2, 1, 0,-1,-1,-2,-2,-2,-2 },
438 { 3, 2, 1, 0,-1,-1,-2,-2,-2,-2 },
439 { 3, 3, 2, 1, 0, 0,-1,-1,-1,-1 },
440 { 4, 3, 2, 1, 0, 0,-1,-1,-1,-1 },
441 { 4, 4, 3, 2, 1, 1, 0, 0, 0, 0 },
442 { 5, 4, 3, 2, 1, 1, 0, 0, 0, 0 }
443};
444
445char HDTrake[9][10] = {
446 { 2, 1, 0,-1,-2,-2,-3,-3,-3,-3 },
447 { 2, 2, 1, 0,-1,-1,-2,-2,-2,-2 },
448 { 3, 2, 1, 0,-1,-1,-2,-2,-2,-2 },
449 { 4, 3, 2, 1, 0, 0,-1,-1,-1,-1 },
450 { 5, 4, 3, 2, 1, 1, 0, 0, 0, 0 },
451 { 6, 5, 4, 3, 2, 2, 1, 1, 1, 1 },
452 { 7, 6, 5, 4, 3, 3, 2, 2, 2, 2 },
453 { 8, 7, 6, 5, 4, 4, 3, 3, 3, 3 },
454 { 9, 8, 7, 6, 5, 5, 4, 4, 4, 4 }
455};
456
457char QUAL[9][5] = {
458 { -1, 0, 0, 1, 1 },
459 { -1, 0, 0, 1, 1 },
460 { -1, 0, 0, 1, 2 },
461 { -1, 0, 0, 1, 2 },
462 { -1, 0, 0, 2, 2 },
463 { -1,-1, 0, 2, 2 },
464 { -2,-1, 0, 2, 2 },
465 { -2,-1, 0, 2, 2 },
466 { -2,-1, 0, 2, 3 }
467};
468
469char MT[9][3] = {
470 { 1, 0, 0 },
471 { 1, 1, 0 },
472 { 2, 1, 0 },
473 { 2, 1, 1 },
474 { 2, 2, 1 },
475 { 3, 2, 1 },
476 { 3, 2, 2 },
477 { 4, 3, 2 },
478 { 4, 4, 2 }
479};
480
481char rangeofshot[] = {
482 0,
483 1, /* grape */
484 3, /* chain */
485 10, /* round */
486 1 /* double */
487};
488
4be74d36 489const char *countryname[] = {
984263bc
MD
490 "American", "British", "Spanish", "French", "Japanese",
491 "Federation", "Klingon", "Orion"
492};
493
4be74d36 494const char *classname[] = {
984263bc
MD
495 "Drift wood",
496 "Ship of the Line",
497 "Ship of the Line",
498 "Frigate",
499 "Corvette",
500 "Sloop",
501 "Brig"
502};
503
4be74d36 504const char *directionname[] = {
984263bc
MD
505 "dead ahead",
506 "off the starboard bow",
507 "off the starboard beam",
508 "off the starboard quarter",
509 "dead astern",
510 "off the port quarter",
511 "off the port beam",
512 "off the port bow",
513 "dead ahead"
514};
515
4be74d36 516const char *qualname[] = { "dead", "mutinous", "green", "mundane", "crack", "elite" };
984263bc
MD
517
518char loadname[] = { '-', 'G', 'C', 'R', 'D', 'E' };
519
520char dr[] = { 0, 1, 1, 0, -1, -1, -1, 0, 1 };
521char dc[] = { 0, 0, -1, -1, -1, 0, 1, 1, 1 };
4be74d36
PA
522
523int winddir;
524int windspeed;
525int turn;
526int game;
527int alive;
528int people;
529char hasdriver;