]> git.pond.sub.org Git - empserver/blob - src/lib/global/ship.c
Update copyright notice.
[empserver] / src / lib / global / ship.c
1 /*
2  *  Empire - A multi-player, client/server Internet based war game.
3  *  Copyright (C) 1986-2004, 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     {{0, 300,  10,   0,   0,   0,   0,   0,   0, 900,   0,   0,   0,  15,   0},
60      25, 15, 10, 10, 15, 2, 0, 0, 0, 0, 0, 0, "fb   fishing boat",
61      0, 180, M_FOOD, 0, 0},
62
63     {{0, 300,  10,   0,   0,   0,   0,   0,   0, 900,   0,   0,   0,  15,   0},
64      25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ft   fishing trawler",
65      35, 300, M_FOOD, 0, 0},
66
67     {{0, 600,  50, 300,  50,   0,   0,   0,   0, 900,   0,1400, 900, 250,   0},
68      60, 40, 20, 25, 35, 3, 0, 0, 1, 0, 0, 0, "cs   cargo ship",
69      20, 500, M_SUPPLY, 0, 2},
70
71     {{0,  30,   5,   0,   0,   0, 990, 990,   0, 200,   0,   0,   0,  45, 990},
72      60, 40, 20, 25, 35, 3, 0, 0, 1, 0, 30, 1, "os   ore ship",
73      20, 500, 0, 0, 0},
74
75     {{0,  20,  80,   0,   0,   0,   0,   0,   0, 200,   0,   0,   0,1200,   0},
76      60, 40, 20, 10, 35, 3, 0, 0, 1, 0, 0, 0, "ss   slave ship",
77      0, 300, 0, 0, 0},
78
79     {{0,  50,  50,   0,   0,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0},
80      200, 100, 20, 25, 35, 3, 0, 0, 1, 0, 30, 1, "ts   trade ship",
81      30, 1750, M_TRADE, 0, 0},
82
83     {{0,   0,  60,  10,   2,   0,   0,   0,   0,  60,   0,   0,   0,   0,   0},
84      30, 30, 50, 25, 25, 3, 1, 1, 1, 0, 0, 0, "frg  frigate",
85      0, 600, M_SEMILAND, 0, 2},
86
87     {{0,  10,   5,   0,   0,   0,   0,   0,   0, 100,   1,   0,   0,   0,   0},
88      25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "oe   oil exploration boat",
89      40, 800, M_OIL, 0, 0},
90
91     {{0, 990,  80,   0,   0,   0,   0,   0,   0, 990, 990,   0,   0, 990,   0},
92      60, 60, 30, 15, 65, 3, 0, 0, 2, 0, 0, 0, "od   oil derrick",
93      50, 1500, M_OIL, 0, 0},
94
95     {{0,   0,   2,  12,   2,   0,   0,   0,   0,   5,   0,   0,   0,   0,   0},
96      20, 10, 10, 38, 10, 2, 1, 1, 0, 0, 4, 1, "pt   patrol boat",
97      40, 300, M_TORP, 0, 0},
98
99     {{0,   0, 100,  40,   5,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0},
100      30, 40, 50, 30, 30, 5, 6, 3, 1, 0, 40, 1, "lc   light cruiser",
101      45, 800, M_MINE, 0, 2 },
102
103     {{0,   0, 120, 100,   8,   0,   0,   0,   0, 200,   0,   0,   0,   0,   0},
104      40, 50, 70, 30, 30, 5, 8, 4, 1, 0, 30, 1, "hc   heavy cruiser",
105      50, 1200, 0, 0, 4},
106
107     {{0,   0, 120,  20,   4,   0,   0,   0,   0, 120,   0,   0,   0,   0,   0},
108      50, 50, 60, 20, 35, 3, 1, 2, 1, 0, 0, 0, "tt   troop transport",
109      10, 800, M_SEMILAND, 0, 2 },
110
111     {{0,   0, 200, 200,  10,   0,   0,   0,   0, 900,   0,   0,   0,   0,   0},
112      50, 70, 95, 25, 35, 6, 10, 7, 1, 0, 50, 2, "bb   battleship",
113      45, 1800, 0, 0, 2},
114
115     {{0,   0, 180, 100,  10,   0,   0,   0,   0, 400,   0,   0,   0,   0,   0},
116      50, 60, 55, 30, 35, 6, 10, 6, 1, 0, 60, 2, "bbc  battlecruiser",
117      75, 1500, 0, 0, 2},
118
119     {{0,  30,   5,   0,   0, 990,   0,   0,   0, 200, 990,   0,   0,  25,   0},
120      60, 40, 75, 25, 45, 3, 0, 0, 1, 0, 30, 1, "tk   tanker",
121      35, 600, M_OILER | M_SUPPLY, 0, 0},
122
123     {{0,   0,  10, 100,   1,   0,   0,   0,   0,  90,   0,   0,   0,   0,   0},
124      25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ms   minesweeper",
125      40, 400, M_MINE | M_SWEEP, 0, 0},
126
127     {{0,   0,  60,  40,   4,   0,   0,   0,   0,  80,   0,   0,   0,   0,   0},
128      30, 30, 45, 35, 20, 4, 6, 3, 1, 0, 30, 1, "dd   destroyer",
129      70, 600, M_MINE | M_DCH | M_SONAR, 0, 1},
130
131     {{0,   0,  25,  36,   5,   0,   0,   0,   0,  80,   0,   0,   0,   0,   0},
132      30, 30, 25, 20, 5, 4, 3, 3, 0, 0, 30, 1, "sb   submarine",
133      60, 650, M_TORP | M_SUB | M_MINE | M_SONAR, 0, 0},
134
135     {{0,   5,  10, 104,  20, 100,   0,   0,   0, 900,   0, 500, 300,   0,   0},
136      40, 40, 50, 30, 2, 3, 0, 0, 0, 0, 50, 2, "sbc  cargo submarine",
137      150, 1200, M_SUPPLY | M_OILER | M_SUB | M_SONAR, 0, 0},
138
139     {{0,   0, 175, 250,   4, 300,   0,   0,   0, 180,   0,   0,   0,   0,   0},
140      50, 60, 60, 30, 40, 5, 2, 2, 4, 20, 50, 2, "cal  light carrier",
141      80, 2700, M_FLY, 20, 0},
142
143     {{0,   0, 350, 500,   4, 500,   0,   0,   0, 900,   0,   0,   0,   0,   0},
144      60, 70, 80, 35, 40, 7, 2, 2, 10, 40, 120, 3, "car  aircraft carrier",
145      160, 4500, M_FLY, 40, 0},
146
147     {{0,   0, 350, 999,   4, 999,   0,   0,   0, 900,   0,   0,   0,   0,   0},
148      70, 80, 100, 45, 40, 9, 2, 2, 20, 4, 0, 0, "can  nuc carrier",
149      305, 8000, M_OILER | M_FLY | M_SUPPLY, 60, 0},
150
151     {{0,   0, 400,  10,   1,   0,   0,   0,   0, 300,   0,   0,   0,   0,   0},
152      60, 40, 40, 30, 30, 2, 0, 0, 2, 0, 30, 1, "ls   landing ship",
153      145, 1000, M_LAND, 0, 6},
154
155     {{0,   0,  60,  60,   4,   0,   0,   0,   0, 120,   0,   0,   0,   0,   0},
156      40, 30, 50, 35, 30, 5, 2, 2, 4, 0, 40, 1, "af   asw frigate",
157      220, 800, M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0},
158
159     {{0,   0,  25,  60,   6,   0,   0,   0,   0, 500,   0,   0,   0,   0,   0},
160      30, 40, 45, 40, 3, 6, 5, 3, 0, 0, 0, 0, "na   nuc attack sub",
161      260, 1200, M_TORP | M_SUB | M_MINE | M_SONAR | M_SUBT, 0, 0},
162
163     {{0,   0, 100,  80,   6,  40,   0,   0,   0, 500,   0,   0,   0,   0,   0},
164      40, 40, 60, 40, 35, 6, 8, 3, 10, 2, 80, 2, "ad   asw destroyer",
165      240, 1500, M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0},
166
167     {{0,   0,  25, 200,   1,   0,   0,   0,   0, 500,   0,   0,   0,   0,   0},
168      30, 40, 55, 35, 2, 6, 0, 0, 0, 0, 0, 0, "nm   nuc miss sub",
169      270, 1500, M_SUB | M_SONAR, 20, 0},
170
171     {{0,   0,  25, 100,   1,   0,   0,   0,   0, 500,   0,   0,   0,   0,   0},
172      30, 30, 35, 30, 3, 3, 0, 0, 0, 0, 30, 1, "msb  missile sub",
173      230, 1200, M_SUB | M_SONAR, 10, 0},
174
175     {{0,   0,   5, 100,   3,   0,   0,   0,   0, 500,   0,   0,   0,   0,   0},
176      20, 20, 15, 40, 15, 3, 2, 2, 0, 0, 7, 1, "mb   missile boat",
177      180, 500, 0, 10, 0},
178
179     {{0,   0,  60, 220,   4,   0,   0,   0,   0, 120,   0,   0,   0,   0,   0},
180      40, 30, 50, 35, 30, 5, 2, 2, 2, 0, 30, 1, "mf   missile frigate",
181      280, 1000, 0, 20, 0},
182
183     {{0,   0, 120, 500,   6, 160,   0,   0,   0, 200,   0,   0,   0,   0,   0},
184      50, 50, 70, 35, 35, 8, 8, 6, 8, 8, 35, 1, "mc   missile cruiser",
185      290, 1500, M_ANTIMISSILE, 40, 0},
186
187     {{0,   0, 100, 100,  15,   0,   0,   0,   0, 200,   0,   0,   0,   0,   0},
188      50, 60, 80, 35, 30, 6, 1, 8, 1, 0, 60, 2, "aac  aa cruiser",
189      130, 1500, M_ANTIMISSILE, 0, 4},
190
191     {{0,   0, 200, 400,  25,  40,   0,   0,   0, 900,   0,   0,   0,   0,   0},
192      50, 60, 80, 35, 30, 6, 1, 16, 30, 2, 0, 0, "agc  aegis cruiser",
193      265, 4000, M_ANTIMISSILE, 32, 0},
194
195     {{0,   0, 200, 400,   8,  40,   0,   0,   0, 900,   0,   0,   0,   0,   0},
196      50, 50, 100, 45, 35, 6, 14, 7, 10, 2, 0, 0, "ncr  nuc cruiser",
197      325, 1800, M_ANTIMISSILE, 20, 0},
198
199     {{0,   0, 200, 120,   6, 160,   0,   0,   0, 500,   0,   0,   0,   0,   0},
200      50, 50, 80, 45, 35, 9, 10, 4, 25, 8, 0, 0, "nas  nuc asw cruiser",
201      330, 1800, M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0},
202
203 /*    ?    c    m    s    g    p    i    d    b    f    o    l    h    u    r */
204     {{0,  50,  50, 600,  50, 999,   0,   0,   0, 999,   0,1500, 900,   0,   0},
205      60, 40, 40, 45, 35, 6, 0, 0, 10, 2, 0, 0, "nsp  nuc supply ship",
206      360, 1500, M_SUPPLY, 0, 2},
207
208     {{0},
209      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "",
210      0, 0, 0, 0, 0}
211 };
212
213 int shp_maxno = (sizeof(mchr) / sizeof(struct mchrstr)) - 1;