2 * Empire - A multi-player, client/server Internet based war game.
3 * Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
4 * Ken Stevens, Steve McClure
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 * See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the
23 * related information and legal notices. It is expected that any future
24 * projects/authors will amend these files as needed.
28 * ship.c: Ship characteristics
30 * Known contributors to this file:
33 * Thomas Ruschak, 1992
39 * marine characteristics -- ship capabilities descriptions
41 * Note, that you should not set the flags M_XLIGHT, M_UNIT, or M_CHOPPER
42 * here. They will be automatically set by init_global() when the server
43 * starts if the ship can carry a non-zero amount of those things.
44 * Also note that if nplanes > 0 and M_FLY is not set, then M_MSL will
45 * automatically be set.
52 struct mchrstr mchr[] = {
53 /* a s v v f E K f f */
54 /* r p i r r g | | u u */
55 /* l h m e s n n l x V e e */
56 /* c c o e i g g i p p l l */
57 /* m m r d b e e m l l c u name tech Cost*/
60 {V_CIVIL, V_MILIT, V_FOOD, V_UW},
62 25, 15, 10, 10, 15, 2, 0, 0, 0, 0, 0, 0, "fb fishing boat", 0, 180,
67 {V_CIVIL, V_MILIT, V_FOOD, V_UW},
69 25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ft fishing trawler", 35,
75 {V_CIVIL, V_MILIT, V_SHELL, V_GUN, V_FOOD, V_LCM, V_HCM, V_UW},
76 {600, 50, 300, 50, 900, 1400, 900, 250},
77 60, 40, 20, 25, 35, 3, 0, 0, 1, 0, 0, 0, "cs cargo ship", 20, 500,
82 {V_CIVIL, V_MILIT, V_IRON, V_DUST, V_FOOD, V_UW, V_RAD},
83 {30, 5, 990, 990, 200, 45, 990},
84 60, 40, 20, 25, 35, 3, 0, 0, 1, 0, 30, 1, "os ore ship", 20, 500,
89 {V_CIVIL, V_MILIT, V_FOOD, V_UW},
91 60, 40, 20, 10, 35, 3, 0, 0, 1, 0, 0, 0, "ss slave ship", 0, 300,
96 {V_CIVIL, V_MILIT, V_FOOD},
98 200, 100, 20, 25, 35, 3, 0, 0, 1, 0, 30, 1, "ts trade ship", 30,
104 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
106 30, 30, 50, 25, 25, 3, 1, 1, 1, 0, 0, 0, "frg frigate", 0, 600,
111 {V_CIVIL, V_MILIT, V_FOOD, V_OIL},
113 25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "oe oil exploration boat",
119 {V_CIVIL, V_MILIT, V_FOOD, V_OIL, V_UW},
120 {990, 80, 990, 990, 990},
121 60, 60, 30, 15, 65, 3, 0, 0, 2, 0, 0, 0, "od oil derrick", 50, 1500,
126 {V_MILIT, V_GUN, V_SHELL, V_FOOD},
128 20, 10, 10, 38, 10, 2, 1, 1, 0, 0, 4, 1, "pt patrol boat", 40, 300,
133 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
135 30, 40, 50, 30, 30, 5, 6, 3, 1, 0, 40, 1, "lc light cruiser", 45,
141 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
143 40, 50, 70, 30, 30, 5, 8, 4, 1, 0, 30, 1, "hc heavy cruiser", 50,
149 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
151 50, 50, 60, 20, 35, 3, 1, 2, 1, 0, 0, 0, "tt troop transport", 10,
157 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
159 50, 70, 95, 25, 35, 6, 10, 7, 1, 0, 50, 2, "bb battleship", 45,
165 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
167 50, 60, 55, 30, 35, 6, 10, 6, 1, 0, 60, 2, "bbc battlecruiser", 75,
173 {V_CIVIL, V_MILIT, V_PETROL, V_FOOD, V_OIL, V_UW},
174 {30, 5, 990, 200, 990, 25},
175 60, 40, 75, 25, 45, 3, 0, 0, 1, 0, 30, 1, "tk tanker", 35, 600,
176 M_OILER | M_SUPPLY, 0, 0,
180 {V_MILIT, V_FOOD, V_SHELL, V_GUN},
182 25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ms minesweeper", 40, 400,
183 M_MINE | M_SWEEP, 0, 0,
187 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
189 30, 30, 45, 35, 20, 4, 6, 3, 1, 0, 30, 1, "dd destroyer", 70, 600,
190 M_MINE | M_DCH | M_SONAR, 0, 1,
194 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
196 30, 30, 25, 20, 5, 4, 3, 3, 0, 0, 30, 1, "sb submarine", 60, 650,
197 M_TORP | M_SUB | M_MINE | M_SONAR, 0, 0,
201 {V_CIVIL, V_MILIT, V_SHELL, V_GUN, V_FOOD, V_LCM, V_HCM, V_PETROL},
202 {5, 10, 104, 20, 900, 500, 300, 100},
203 40, 40, 50, 30, 2, 3, 0, 0, 0, 0, 50, 2, "sbc cargo submarine", 150,
205 M_SUPPLY | M_OILER | M_SUB | M_SONAR, 0, 0,
209 {V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
210 {175, 250, 4, 300, 180},
211 50, 60, 60, 30, 40, 5, 2, 2, 4, 20, 50, 2, "cal light carrier", 80,
217 {V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
218 {350, 500, 4, 500, 900},
219 60, 70, 80, 35, 40, 7, 2, 2, 10, 40, 120, 3, "car aircraft carrier",
225 {V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
226 {350, 999, 4, 999, 900},
227 70, 80, 100, 45, 40, 9, 2, 2, 20, 4, 0, 0, "can nuc carrier", 305,
229 M_OILER | M_FLY | M_SUPPLY, 60, 0,
233 {V_MILIT, V_FOOD, V_GUN, V_SHELL},
235 60, 40, 40, 30, 30, 2, 0, 0, 2, 0, 30, 1, "ls landing ship", 145,
241 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
243 40, 30, 50, 35, 30, 5, 2, 2, 4, 0, 40, 1, "af asw frigate", 220,
245 M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0,
249 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
251 30, 40, 45, 40, 3, 6, 5, 3, 0, 0, 0, 0, "na nuc attack sub", 260,
253 M_TORP | M_SUB | M_MINE | M_SONAR | M_SUBT, 0, 0,
257 {V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
258 {100, 80, 6, 40, 500},
259 40, 40, 60, 40, 35, 6, 8, 3, 10, 2, 80, 2, "ad asw destroyer", 240,
261 M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0,
265 {V_MILIT, V_SHELL, V_FOOD, V_GUN},
267 30, 40, 55, 35, 2, 6, 0, 0, 0, 0, 0, 0, "nm nuc miss sub", 270,
269 M_SUB | M_SONAR, 20, 0,
273 {V_MILIT, V_SHELL, V_FOOD, V_GUN},
275 30, 30, 35, 30, 3, 3, 0, 0, 0, 0, 30, 1, "msb missile sub", 230,
277 M_SUB | M_SONAR, 10, 0,
281 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
283 20, 20, 15, 40, 15, 3, 2, 2, 0, 0, 7, 1, "mb missile boat", 180,
289 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
291 40, 30, 50, 35, 30, 5, 2, 2, 2, 0, 30, 1, "mf missile frigate", 280,
297 {V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
298 {120, 500, 6, 160, 200},
299 50, 50, 70, 35, 35, 8, 8, 6, 8, 8, 35, 1, "mc missile cruiser", 290,
301 M_ANTIMISSILE, 40, 0,
305 {V_MILIT, V_SHELL, V_GUN, V_FOOD},
307 50, 60, 80, 35, 30, 6, 1, 8, 1, 0, 60, 2, "aac aa cruiser", 130,
313 {V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
314 {200, 400, 25, 40, 900},
315 50, 60, 80, 35, 30, 6, 1, 16, 30, 2, 0, 0, "agc aegis cruiser", 265,
317 M_ANTIMISSILE, 32, 0,
321 {V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
322 {200, 400, 8, 40, 900},
323 50, 50, 100, 45, 35, 6, 14, 7, 10, 2, 0, 0, "ncr nuc cruiser", 325,
325 M_ANTIMISSILE, 20, 0,
329 {V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD},
330 {200, 120, 6, 160, 500},
331 50, 50, 80, 45, 35, 9, 10, 4, 25, 8, 0, 0, "nas nuc asw cruiser",
333 M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0,
337 {V_CIVIL, V_MILIT, V_SHELL, V_GUN, V_PETROL, V_FOOD, V_LCM, V_HCM},
338 {50, 50, 600, 50, 999, 999, 1500, 900},
339 60, 40, 40, 45, 35, 6, 0, 0, 10, 2, 0, 0, "nsp nuc supply ship", 360,
347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0,
352 int shp_maxno = (sizeof(mchr) / sizeof(struct mchrstr)) - 1;