]> git.pond.sub.org Git - empserver/blob - src/lib/global/ship.c
Indented with src/scripts/indent-emp.
[empserver] / src / lib / global / ship.c
1 /*
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
5  *
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.
10  *
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.
15  *
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
19  *
20  *  ---
21  *
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.
25  *
26  *  ---
27  *
28  *  ship.c: Ship characteristics
29  * 
30  *  Known contributors to this file:
31  *     Dave Pare, 1986
32  *     Jeff Bailey
33  *     Thomas Ruschak, 1992
34  *     Ken Stevens, 1995
35  *     Steve McClure, 1998
36  */
37
38 /*
39  * marine characteristics -- ship capabilities descriptions
40  * 
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.
46  */
47
48 #include "misc.h"
49 #include "var.h"
50 #include "ship.h"
51
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*/
58
59     {4,
60      {V_CIVIL, V_MILIT, V_FOOD, V_UW},
61      {300, 10, 900, 15},
62      25, 15, 10, 10, 15, 2, 0, 0, 0, 0, 0, 0, "fb   fishing boat", 0, 180,
63      M_FOOD, 0, 0,
64      },
65
66     {4,
67      {V_CIVIL, V_MILIT, V_FOOD, V_UW},
68      {300, 10, 900, 15},
69      25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ft   fishing trawler", 35,
70      300,
71      M_FOOD, 0, 0,
72      },
73
74     {8,
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,
78      M_SUPPLY, 0, 2,
79      },
80
81     {7,
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,
85      0, 0, 0,
86      },
87
88     {4,
89      {V_CIVIL, V_MILIT, V_FOOD, V_UW},
90      {20, 80, 200, 1200},
91      60, 40, 20, 10, 35, 3, 0, 0, 1, 0, 0, 0, "ss   slave ship", 0, 300,
92      0, 0, 0,
93      },
94
95     {3,
96      {V_CIVIL, V_MILIT, V_FOOD},
97      {50, 50, 100},
98      200, 100, 20, 25, 35, 3, 0, 0, 1, 0, 30, 1, "ts   trade ship", 30,
99      1750,
100      M_TRADE, 0, 0,
101      },
102
103     {4,
104      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
105      {60, 10, 2, 60},
106      30, 30, 50, 25, 25, 3, 1, 1, 1, 0, 0, 0, "frg  frigate", 0, 600,
107      M_SEMILAND, 0, 2,
108      },
109
110     {4,
111      {V_CIVIL, V_MILIT, V_FOOD, V_OIL},
112      {10, 5, 100, 1},
113      25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "oe   oil exploration boat",
114      40, 800,
115      M_OIL, 0, 0,
116      },
117
118     {5,
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,
122      M_OIL, 0, 0,
123      },
124
125     {4,
126      {V_MILIT, V_GUN, V_SHELL, V_FOOD},
127      {2, 2, 12, 5},
128      20, 10, 10, 38, 10, 2, 1, 1, 0, 0, 4, 1, "pt   patrol boat", 40, 300,
129      M_TORP, 0, 0,
130      },
131
132     {4,
133      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
134      {100, 40, 5, 100},
135      30, 40, 50, 30, 30, 5, 6, 3, 1, 0, 40, 1, "lc   light cruiser", 45,
136      800,
137      M_MINE, 0, 2,
138      },
139
140     {4,
141      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
142      {120, 100, 8, 200},
143      40, 50, 70, 30, 30, 5, 8, 4, 1, 0, 30, 1, "hc   heavy cruiser", 50,
144      1200,
145      0, 0, 4,
146      },
147
148     {4,
149      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
150      {120, 20, 4, 120},
151      50, 50, 60, 20, 35, 3, 1, 2, 1, 0, 0, 0, "tt   troop transport", 10,
152      800,
153      M_SEMILAND, 0, 2,
154      },
155
156     {4,
157      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
158      {200, 200, 10, 900},
159      50, 70, 95, 25, 35, 6, 10, 7, 1, 0, 50, 2, "bb   battleship", 45,
160      1800,
161      0, 0, 2,
162      },
163
164     {4,
165      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
166      {180, 100, 10, 400},
167      50, 60, 55, 30, 35, 6, 10, 6, 1, 0, 60, 2, "bbc  battlecruiser", 75,
168      1500,
169      0, 0, 2,
170      },
171
172     {6,
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,
177      },
178
179     {4,
180      {V_MILIT, V_FOOD, V_SHELL, V_GUN},
181      {10, 90, 100, 1},
182      25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ms   minesweeper", 40, 400,
183      M_MINE | M_SWEEP, 0, 0,
184      },
185
186     {4,
187      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
188      {60, 40, 4, 80},
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,
191      },
192
193     {4,
194      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
195      {25, 36, 5, 80},
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,
198      },
199
200     {8,
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,
204      1200,
205      M_SUPPLY | M_OILER | M_SUB | M_SONAR, 0, 0,
206      },
207
208     {5,
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,
212      2700,
213      M_FLY, 20, 0,
214      },
215
216     {5,
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",
220      160, 4500,
221      M_FLY, 40, 0,
222      },
223
224     {5,
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,
228      8000,
229      M_OILER | M_FLY | M_SUPPLY, 60, 0,
230      },
231
232     {4,
233      {V_MILIT, V_FOOD, V_GUN, V_SHELL},
234      {400, 300, 1, 10},
235      60, 40, 40, 30, 30, 2, 0, 0, 2, 0, 30, 1, "ls   landing ship", 145,
236      1000,
237      M_LAND, 0, 6,
238      },
239
240     {4,
241      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
242      {60, 60, 4, 120},
243      40, 30, 50, 35, 30, 5, 2, 2, 4, 0, 40, 1, "af   asw frigate", 220,
244      800,
245      M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0,
246      },
247
248     {4,
249      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
250      {25, 60, 6, 500},
251      30, 40, 45, 40, 3, 6, 5, 3, 0, 0, 0, 0, "na   nuc attack sub", 260,
252      1200,
253      M_TORP | M_SUB | M_MINE | M_SONAR | M_SUBT, 0, 0,
254      },
255
256     {5,
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,
260      1500,
261      M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0,
262      },
263
264     {4,
265      {V_MILIT, V_SHELL, V_FOOD, V_GUN},
266      {25, 200, 500, 1},
267      30, 40, 55, 35, 2, 6, 0, 0, 0, 0, 0, 0, "nm   nuc miss sub", 270,
268      1500,
269      M_SUB | M_SONAR, 20, 0,
270      },
271
272     {4,
273      {V_MILIT, V_SHELL, V_FOOD, V_GUN},
274      {25, 100, 500, 1},
275      30, 30, 35, 30, 3, 3, 0, 0, 0, 0, 30, 1, "msb  missile sub", 230,
276      1200,
277      M_SUB | M_SONAR, 10, 0,
278      },
279
280     {4,
281      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
282      {5, 100, 3, 500},
283      20, 20, 15, 40, 15, 3, 2, 2, 0, 0, 7, 1, "mb   missile boat", 180,
284      500,
285      0, 10, 0,
286      },
287
288     {4,
289      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
290      {60, 220, 4, 120},
291      40, 30, 50, 35, 30, 5, 2, 2, 2, 0, 30, 1, "mf   missile frigate", 280,
292      1000,
293      0, 20, 0,
294      },
295
296     {5,
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,
300      1500,
301      M_ANTIMISSILE, 40, 0,
302      },
303
304     {4,
305      {V_MILIT, V_SHELL, V_GUN, V_FOOD},
306      {100, 100, 15, 200},
307      50, 60, 80, 35, 30, 6, 1, 8, 1, 0, 60, 2, "aac  aa cruiser", 130,
308      1500,
309      M_ANTIMISSILE, 0, 4,
310      },
311
312     {5,
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,
316      4000,
317      M_ANTIMISSILE, 32, 0,
318      },
319
320     {5,
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,
324      1800,
325      M_ANTIMISSILE, 20, 0,
326      },
327
328     {5,
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",
332      330, 1800,
333      M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0,
334      },
335
336     {8,
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,
340      1500,
341      M_SUPPLY, 0, 2,
342      },
343
344     {0,
345      {0},
346      {0},
347      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0,
348      0, 0, 0,
349      }
350 };
351
352 int shp_maxno = (sizeof(mchr) / sizeof(struct mchrstr)) - 1;