]> git.pond.sub.org Git - empserver/commitdiff
(mchr, plchr, lchr, nchr): Move initializer to new builtin config
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 19 Feb 2006 09:15:46 +0000 (09:15 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 19 Feb 2006 09:15:46 +0000 (09:15 +0000)
files ship.config, plane.config, land.config, nuke.config.
(empfile): Declare the new config files.
(install, installdirs): Install them.
(builtins): New make variable.

Make.mk
src/lib/gen/emp_config.c
src/lib/global/file.c
src/lib/global/land.c
src/lib/global/land.config [new file with mode: 0644]
src/lib/global/nuke.c
src/lib/global/nuke.config [new file with mode: 0644]
src/lib/global/plane.c
src/lib/global/plane.config [new file with mode: 0644]
src/lib/global/ship.c
src/lib/global/ship.config [new file with mode: 0644]

diff --git a/Make.mk b/Make.mk
index 2a91357bf383785c766eab354f48c7db6eae7a78..ccfd5e1d9da94cfcc3323edbff8dc7a579d5df34 100644 (file)
--- a/Make.mk
+++ b/Make.mk
@@ -52,6 +52,7 @@ csrc := $(filter %.c, $(src))
 tsrc := $(filter %.t, $(src))
 man1 := $(filter man/%.1, $(src))
 man6 := $(filter man/%.6, $(src))
+builtins := $(filter src/lib/global/%.config, $(src))
 
 # Info topics and subjects
 -include subjects.mk
@@ -169,6 +170,7 @@ distclean: clean
 install: all installdirs
        $(INSTALL_PROGRAM) $(util) $(server) $(sbindir)
        $(INSTALL_PROGRAM) $(client) $(bindir)
+       $(INSTALL) -m 444 $(builtins) $(builtindir)
        $(INSTALL_DATA) $(info.nr) $(einfodir)
        $(INSTALL_DATA) $(addprefix $(srcdir)/, $(man1)) $(mandir)/man1
        $(INSTALL_DATA) $(addprefix $(srcdir)/, $(man6)) $(mandir)/man6
@@ -188,7 +190,7 @@ install: all installdirs
 
 .PHONY: installdirs
 installdirs:
-       mkdir -p $(bindir) $(sbindir) $(gamedir) $(einfodir) $(mandir)/man1 $(mandir)/man6 $(dir $(econfig))
+       mkdir -p $(sbindir) $(bindir) $(builtindir) $(einfodir) $(mandir)/man1 $(mandir)/man6 $(dir $(econfig)) $(gamedir)
 
 .PHONY: install-html
 install-html: html | $(ehtmldir)
index d5c54b11bae34cb31aa772cd799831039f8bf872..5825e0405aee9449f80b756370216a7a22f8178b 100644 (file)
 /*
  * STILL TO DO
  *
- * 1. Change other constants - such as Num Countries etc.
- *    Just requires variables to be assigned, then dynamic allocation in
- *    a few places. Some checks needed in the server to check the world
- *    hasn't changed size etc.
- * 2. Could look at loading in planes, units etc. Should be easy enough.
- *
+ * Change other constants - such as MAXNOC etc.
+ * Just requires variables to be assigned, then dynamic allocation in
+ * a few places.  Some checks needed in the server to check the world
+ * hasn't changed size etc.
  */
 
 #include <config.h>
 #include <assert.h>
 #include <errno.h>
 #include <stdio.h>
-#include <stdlib.h>            /* atoi free atol */
+#include <stdlib.h>
 #include <string.h>
 
 #include "misc.h"
 #include "file.h"
 #include "optlist.h"
-#include "gen.h"               /* parse */
+#include "gen.h"
 
 /* Dummy one */
 static int emp_config_dummy;
index a5e077393321c700afd6371fb7e0dcbc3d1e4909..12ea3ca4189c5e887e57184caa1dc7910be85100 100644 (file)
@@ -145,18 +145,28 @@ struct empfile empfile[] = {
      UNMAPPED_CACHE(struct realmstr, EFF_OWNER)},
 
     /* Static game data (configuration) */
-    {EF_SECTOR_CHR, "sect-chr", NULL, dchr_ca, ARRAY_TABLE(dchr, EFF_CFG)},
-    {EF_SHIP_CHR, "ship-chr", NULL, mchr_ca, ARRAY_CACHE(mchr, EFF_CFG)},
-    {EF_PLANE_CHR, "plane-chr", NULL, plchr_ca, ARRAY_CACHE(plchr, EFF_CFG)},
-    {EF_LAND_CHR, "land-chr", NULL, lchr_ca, ARRAY_CACHE(lchr, EFF_CFG)},
-    {EF_NUKE_CHR, "nuke-chr", NULL, nchr_ca, ARRAY_CACHE(nchr, EFF_CFG)},
-    {EF_NEWS_CHR, "news-chr", NULL, rpt_ca, ARRAY_TABLE(rpt, EFF_CFG)},
-    {EF_ITEM, "item", NULL, ichr_ca, ARRAY_TABLE(ichr, EFF_CFG)},
+    {EF_SECTOR_CHR, "sect-chr", NULL, dchr_ca,
+     ARRAY_TABLE(dchr, EFF_CFG)},
+    {EF_SHIP_CHR, "ship-chr", "ship.config", mchr_ca,
+     ARRAY_CACHE(mchr, EFF_CFG)},
+    {EF_PLANE_CHR, "plane-chr", "plane.config", plchr_ca,
+     ARRAY_CACHE(plchr, EFF_CFG)},
+    {EF_LAND_CHR, "land-chr", "land.config", lchr_ca,
+     ARRAY_CACHE(lchr, EFF_CFG)},
+    {EF_NUKE_CHR, "nuke-chr", "nuke.config", nchr_ca,
+     ARRAY_CACHE(nchr, EFF_CFG)},
+    {EF_NEWS_CHR, "news-chr", NULL, rpt_ca,
+     ARRAY_TABLE(rpt, EFF_CFG)},
+    {EF_ITEM, "item", NULL, ichr_ca,
+     ARRAY_TABLE(ichr, EFF_CFG)},
     {EF_INFRASTRUCTURE, "infrastructure", NULL, intrchr_ca,
      ARRAY_TABLE(intrchr, EFF_CFG)},
-    {EF_PRODUCT, "product", NULL, pchr_ca, ARRAY_TABLE(pchr, EFF_CFG)},
-    {EF_TABLE, "table", NULL, empfile_ca, ARRAY_TABLE(empfile, EFF_CFG)},
-    {EF_META, "meta", NULL, mdchr_ca, PTR_CACHE(mdchr_ca, EFF_CFG)},
+    {EF_PRODUCT, "product", NULL, pchr_ca,
+     ARRAY_TABLE(pchr, EFF_CFG)},
+    {EF_TABLE, "table", NULL, empfile_ca,
+     ARRAY_TABLE(empfile, EFF_CFG)},
+    {EF_META, "meta", NULL, mdchr_ca,
+     PTR_CACHE(mdchr_ca, EFF_CFG)},
 
     /* Symbol tables */
 #define SYMTAB(type, name, tab) \
index d623dc0316bce6d089757cb2e6b06614487cfb33..c0d51e0be1fd473048b0343a19784a7ca7a1b0b0 100644 (file)
 #include "misc.h"
 #include "land.h"
 
-struct lchrstr lchr[] = {
-
-/* name
-   lcm, hcm, mil, gun, shell, tech,   $,
-   att, def, vul, spd, vis, spy, rad, frg, acc, dam, amm, aaf, fc, fu, xpl, mxl
-   flags, nv
-   cargo
-*/
-
-    {{0,  20,   0,   0,   0,   0,   0,   0,  12,   0,   0,   0,   0,   0},
-     "cav  cavalry",
-     10, 5, 0, 0, 0, 30, 500,
-     1.2, 0.5, 80, 32, 18, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-     L_RECON | L_LIGHT,
-     },
-
-    {{0,  25,   1,   0,   0,   0,   0,   0,  15,   0,   0,   0,   0,   0},
-     "linf light infantry",
-     8, 4, 0, 0, 0, 40, 300,
-     1.0, 1.5, 60, 28, 15, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,
-     L_ASSAULT | L_LIGHT,
-     },
-
-    {{0, 100,   0,   0,   0,   0,   0,   0,  24,   0,   0,   0,   0,   0},
-     "inf  infantry",
-     10, 5, 0, 0, 0, 50, 500,
-     1.0, 1.5, 60, 25, 15, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-     L_ASSAULT | L_LIGHT,
-     },
-
-    {{0, 100,   8,   0,   0,   0,   0,   0,  60,   0,   0,   0,   0,   0},
-     "mtif motor inf",
-     15, 10, 0, 0, 0, 190, 400,
-     1.2, 2.2, 60, 33, 17, 1, 3, 0, 0, 0, 2, 3, 13, 1, 0, 0,
-     L_LIGHT,
-     },
-
-    {{0, 100,   8,   0,   0,   0,   0,   0,  60,   0,   0,   0,   0,   0},
-     "mif  mech inf",
-     15, 10, 0, 0, 0, 190, 800,
-     1.5, 2.5, 50, 33, 17, 1, 3, 0, 0, 0, 2, 3, 13, 1, 0, 0,
-     L_LIGHT,
-     },
-
-    {{0, 100,   4,   0,   0,   0,   0,   0,  60,   0,   0,   0,   0,   0},
-     "mar  marines",
-     10, 5, 0, 0, 0, 140, 1000,
-     1.4, 2.4, 60, 25, 14, 2, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0,
-     L_MARINE | L_ASSAULT | L_LIGHT,
-     },
-
-    {{0,  25, 200,  10, 300, 100, 100,  10, 300,   0, 200, 100,   0,   0},
-     "sup  supply",
-     10, 5, 0, 0, 0, 50, 500,
-     0.1, 0.2, 80, 25, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-     L_LIGHT | L_SUPPLY,
-     },
-
-    {{0, 990, 990, 200, 990, 500, 500, 100, 990, 990, 990, 990,   0, 150},
-     "tra  train",
-     100, 50, 0, 0, 0, 40, 3500,
-     0.0, 0.0, 120, 10, 25, 3, 0, 0, 0, 0, 0, 0, 0, 0, 5, 12,
-     L_TRAIN | L_HEAVY | L_SUPPLY,
-     },
-
-    {{0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0},
-     "spy  infiltrator",
-     10, 5, 0, 0, 0, 40, 750,
-     0.0, 0.0, 80, 32, 18, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-     L_ASSAULT | L_RECON | L_LIGHT | L_SPY,
-     },
-
-    {{0,   0,   3,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0},
-     "com  commando",
-     10, 5, 0, 0, 0, 55, 1500,
-     0.0, 0.0, 80, 32, 18, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-     L_ASSAULT | L_RECON | L_LIGHT | L_SPY,
-     },
-
-    {{0,  20,   5,   0,   0,   0,   0,   0,  12,   0,   0,   0,   0,   0},
-     "aau  aa unit",
-     20, 10, 0, 0, 0, 70, 500,
-     0.5, 1.0, 60, 18, 20, 1, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0,
-     L_FLAK | L_LIGHT,
-     },
-
-    {{0,  25,  40,  10,   0,   0,   0,   0,  24,   0,   0,   0,   0,   0},
-     "art  artillery",
-     20, 10, 0, 0, 0, 35, 800,
-     0.1, 0.4, 70, 18, 20, 1, 0, 8, 50, 5, 2, 1, 0, 0, 0, 0,
-     L_LIGHT,
-     },
-
-    {{0,  25,  20,   6,   0,   0,   0,   0,  12,   0,   0,   0,   0,   0},
-     "lat  lt artillery",
-     20, 10, 0, 0, 0, 70, 500,
-     0.2, 0.6, 60, 30, 18, 1, 1, 5, 10, 3, 1, 1, 0, 0, 0, 0,
-     L_LIGHT,
-     },
-
-    {{0,  25,  80,  12,   0,   0,   0,   0,  24,   0,   0,   0,   0,   0},
-     "hat  hvy artillery",
-     40, 20, 0, 0, 0, 100, 800,
-     0.0, 0.2, 60, 12, 20, 1, 0, 11, 99, 8, 4, 1, 0, 0, 0, 0,
-     0,
-     },
-
-    {{0,  25,  40,  10,   0,   0,   0,   0,  15,   0,   0,   0,   0,   0},
-     "mat  mech artillery",
-     20, 10, 0, 0, 0, 200, 1000,
-     0.2, 0.6, 50, 35, 17, 1, 1, 8, 35, 6, 3, 3, 13, 1, 0, 0,
-     L_LIGHT,
-     },
-
-    {{0,  20,   3,   0,   0,   0,   0,   0,  12,   0,   0,   0,   0,   0},
-     "eng  engineer",
-     10, 5, 0, 0, 0, 130, 3000,
-     1.2, 2.4, 50, 25, 14, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,
-     L_ENGINEER | L_ASSAULT | L_LIGHT,
-     },
-
-    {{0,  20,   4,   0,   0,   0,   0,   0,  15,   0,   0,   0,   0,   0},
-     "meng mech engineer",
-     10, 5, 0, 0, 0, 260, 4500,
-     1.8, 3.5, 45, 33, 15, 3, 3, 0, 0, 0, 1, 5, 25, 2, 0, 0,
-     L_ENGINEER | L_ASSAULT | L_LIGHT,
-     },
-
-    {{0,  50,   4,   0,   0,   0,   0,   0,  30,   0,   0,   0,   0,   0},
-     "lar  lt armor",
-     10, 5, 0, 0, 0, 150, 600,
-     2.0, 1.0, 50, 42, 15, 4, 4, 0, 0, 0, 1, 2, 25, 1, 0, 0,
-     L_RECON | L_LIGHT,
-     },
-
-    {{0, 100,   3,   0,   0,   0,   0,   0,  48,   0,   0,   0,   0,   0},
-     "har  hvy armor",
-     20, 10, 0, 0, 0, 120, 500,
-     2.0, 0.8, 50, 18, 17, 1, 1, 0, 0, 0, 2, 1, 10, 2, 0, 0,
-     0,
-     },
-
-    {{0,  50,   4,   0,   0,   0,   0,   0,  30,   0,   0,   0,   0,   0},
-     "arm  armor",
-     20, 10, 0, 0, 0, 170, 1000,
-     3.0, 1.5, 40, 33, 16, 2, 2, 0, 0, 0, 1, 2, 13, 1, 0, 0,
-     L_LIGHT,
-     },
-
-    {{0,  50,   4,   0,   0,   0,   0,   0,  30,   0,   0,   0,   0,   0},
-     "sec  security",
-     10, 5, 0, 0, 0, 170, 600,
-     1.0, 2.0, 60, 25, 15, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,
-     L_SECURITY | L_LIGHT,
-     },
-
-    {{0,  10,   0,   0,   0,   0,   0,   0,   7,   0,   0,   0,   0,   0},
-     "rad  radar unit",
-     10, 5, 0, 0, 0, 270, 1000,
-     0.0, 0.0, 50, 33, 15, 3, 0, 0, 0, 0, 0, 2, 25, 2, 1, 0,
-     L_RADAR | L_LIGHT,
-     },
-
-/* name
-   lcm, hcm, mil, gun, shell, tech,   $,
-   att, def, vul, spd, vis, spy, rad, frg, acc, dam, amm, aaf, fc, fu, xpl,
-   flags, nv
-   cargo
-*/
-
-    {{0},
-     NULL,
-     0, 0, 0, 0, 0, 0, 0,
-     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-     0,
-     }
-};
+/*
+ * Table of land unit types
+ * Initialized on startup from land.config and deity custom config (if any).
+ */
+struct lchrstr lchr[];
diff --git a/src/lib/global/land.config b/src/lib/global/land.config
new file mode 100644 (file)
index 0000000..09463b5
--- /dev/null
@@ -0,0 +1,66 @@
+#
+#   Empire - A multi-player, client/server Internet based war game.
+#   Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
+#                            Ken Stevens, Steve McClure
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+#   ---
+#
+#   See files README, COPYING and CREDITS in the root of the source
+#   tree for related information and legal notices.  It is expected
+#   that future projects/authors will amend these files as needed.
+#
+#   ---
+#
+#   land.config: Land unit characteristics
+#
+#   Known contributors to this file:
+#      Markus Armbruster, 2006
+#
+#   Derived from land.c; known contributors:
+#      Thomas Ruschak, 1992
+#      Ken Stevens, 1995
+#      Steve McClure, 1998-2000
+#
+
+# Available flags are in land_chr_flags[].  info Unit-types should
+# document them all.
+
+config land-chr
+name                 civ mil she gun pet iro dus bar foo oil lcm hcm  uw rad l_b h_b g_b s_b tech cost att def vul spd vis spy rm frg acc dam amm aaf fuelc fuelu nx nl flags
+"cav  cavalry"         0  20   0   0   0   0   0   0  12   0   0   0   0   0  10   5   0   0   30  500 1.2 0.5  80  32  18   4  3   0   0   0   0   0     0     0  0  0 (light recon)
+"linf light infantry"  0  25   1   0   0   0   0   0  15   0   0   0   0   0   8   4   0   0   40  300 1.0 1.5  60  28  15   2  1   0   0   0   1   1     0     0  0  0 (light assault)
+"inf  infantry"        0 100   0   0   0   0   0   0  24   0   0   0   0   0  10   5   0   0   50  500 1.0 1.5  60  25  15   2  1   0   0   0   0   0     0     0  0  0 (light assault)
+"mtif motor inf"       0 100   8   0   0   0   0   0  60   0   0   0   0   0  15  10   0   0  190  400 1.2 2.2  60  33  17   1  3   0   0   0   2   3    13     1  0  0 (light)
+"mif  mech inf"        0 100   8   0   0   0   0   0  60   0   0   0   0   0  15  10   0   0  190  800 1.5 2.5  50  33  17   1  3   0   0   0   2   3    13     1  0  0 (light)
+"mar  marines"         0 100   4   0   0   0   0   0  60   0   0   0   0   0  10   5   0   0  140 1000 1.4 2.4  60  25  14   2  1   0   0   0   1   2     0     0  0  0 (light marine assault)
+"sup  supply"          0  25 200  10 300 100 100  10 300   0 200 100   0   0  10   5   0   0   50  500 0.1 0.2  80  25  20   1  0   0   0   0   0   0     0     0  0  0 (supply light)
+"tra  train"           0 990 990 200 990 500 500 100 990 990 990 990   0 150 100  50   0   0   40 3500 0.0 0.0 120  10  25   3  0   0   0   0   0   0     0     0  5 12 (supply train heavy)
+"spy  infiltrator"     0   0   0   0   0   0   0   0   0   0   0   0   0   0  10   5   0   0   40  750 0.0 0.0  80  32  18   4  3   0   0   0   0   0     0     0  0  0 (recon light assault spy)
+"com  commando"        0   0   3   0   0   0   0   0   0   0   0   0   0   0  10   5   0   0   55 1500 0.0 0.0  80  32  18   4  3   0   0   0   0   0     0     0  0  0 (light recon assault spy)
+"aau  aa unit"         0  20   5   0   0   0   0   0  12   0   0   0   0   0  20  10   0   0   70  500 0.5 1.0  60  18  20   1  1   0   0   0   1   2     0     0  0  0 (light flak)
+"art  artillery"       0  25  40  10   0   0   0   0  24   0   0   0   0   0  20  10   0   0   35  800 0.1 0.4  70  18  20   1  0   8  50   5   2   1     0     0  0  0 (light)
+"lat  lt artillery"    0  25  20   6   0   0   0   0  12   0   0   0   0   0  20  10   0   0   70  500 0.2 0.6  60  30  18   1  1   5  10   3   1   1     0     0  0  0 (light)
+"hat  hvy artillery"   0  25  80  12   0   0   0   0  24   0   0   0   0   0  40  20   0   0  100  800 0.0 0.2  60  12  20   1  0  11  99   8   4   1     0     0  0  0 ()
+"mat  mech artillery"  0  25  40  10   0   0   0   0  15   0   0   0   0   0  20  10   0   0  200 1000 0.2 0.6  50  35  17   1  1   8  35   6   3   3    13     1  0  0 (light)
+"eng  engineer"        0  20   3   0   0   0   0   0  12   0   0   0   0   0  10   5   0   0  130 3000 1.2 2.4  50  25  14   2  1   0   0   0   1   1     0     0  0  0 (engineer light assault)
+"meng mech engineer"   0  20   4   0   0   0   0   0  15   0   0   0   0   0  10   5   0   0  260 4500 1.8 3.5  45  33  15   3  3   0   0   0   1   5    25     2  0  0 (engineer light assault)
+"lar  lt armor"        0  50   4   0   0   0   0   0  30   0   0   0   0   0  10   5   0   0  150  600 2.0 1.0  50  42  15   4  4   0   0   0   1   2    25     1  0  0 (light recon)
+"har  hvy armor"       0 100   3   0   0   0   0   0  48   0   0   0   0   0  20  10   0   0  120  500 2.0 0.8  50  18  17   1  1   0   0   0   2   1    10     2  0  0 ()
+"arm  armor"           0  50   4   0   0   0   0   0  30   0   0   0   0   0  20  10   0   0  170 1000 3.0 1.5  40  33  16   2  2   0   0   0   1   2    13     1  0  0 (light)
+"sec  security"        0  50   4   0   0   0   0   0  30   0   0   0   0   0  10   5   0   0  170  600 1.0 2.0  60  25  15   2  1   0   0   0   1   1     0     0  0  0 (security light)
+"rad  radar unit"      0  10   0   0   0   0   0   0   7   0   0   0   0   0  10   5   0   0  270 1000 0.0 0.0  50  33  15   3  0   0   0   0   0   2    25     2  1  0 (light radar)
+/config
index 4fde4cb915d7bfa085e53fba127e9dbb831cb373..ce6a75fbcda9ce3b1d490f8d7f82592323a3b27e 100644 (file)
 #include "misc.h"
 #include "nuke.h"
 
-
-struct nchrstr nchr[] = {
-    /* name         lcm  hcm  oil  rads blst dam    cost  tech lbs flags */
-    {"10kt  fission", 50, 50, 25, 70, 3, 70, 10000, 280, 4, 0},
-    {"15kt  fission", 50, 50, 25, 80, 3, 90, 15000, 290, 5, 0},
-    {"50kt  fission", 60, 60, 30, 90, 3, 100, 25000, 300, 6, 0},
-    {"100kt fission", 75, 75, 40, 120, 4, 125, 30000, 310, 8, 0},
-    {"5kt   fusion", 15, 15, 15, 30, 2, 80, 12500, 315, 1, 0},
-    {"75kt  fusion", 40, 40, 35, 50, 3, 90, 20000, 320, 3, 0},
-    {"250kt fusion", 50, 50, 45, 60, 4, 110, 25000, 330, 4, 0},
-    {"500kt fusion", 60, 60, 50, 80, 5, 120, 35000, 340, 5, 0},
-    {"1mt   fusion", 75, 75, 50, 110, 6, 150, 40000, 350, 5, 0},
-    {"60kt  neutron", 60, 60, 30, 100, 3, 30, 30000, 355, 2, N_NEUT},
-    {"3mt   fusion", 100, 100, 75, 130, 7, 170, 45000, 360, 6, 0},
-    {"5mt   fusion", 120, 120, 100, 150, 8, 190, 50000, 370, 8, 0},
-    {"120kt neutron", 75, 75, 40, 120, 5, 50, 36000, 375, 3, N_NEUT},
-    {NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-};
+/*
+ * Table of nuke types
+ * Initialized on startup from nuke.config and deity custom config (if any).
+ */
+struct nchrstr nchr[];
diff --git a/src/lib/global/nuke.config b/src/lib/global/nuke.config
new file mode 100644 (file)
index 0000000..ae6ccd1
--- /dev/null
@@ -0,0 +1,54 @@
+#
+#   Empire - A multi-player, client/server Internet based war game.
+#   Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
+#                            Ken Stevens, Steve McClure
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+#   ---
+#
+#   See files README, COPYING and CREDITS in the root of the source
+#   tree for related information and legal notices.  It is expected
+#   that future projects/authors will amend these files as needed.
+#
+#   ---
+#
+#   nuke.c: Nuke characteristics
+#
+#   Known contributors to this file:
+#       Markus Armbruster, 2006
+#
+#   Derived from nuke.c.
+#
+
+# Available flags are in nuke_chr_flags[].  info Nuke-types should
+# document them all.
+
+config nuke-chr
+name            l_b h_b o_b r_b bla dam  cost tech wei flags
+"10kt  fission"  50  50  25  70  3  70  10000  280   4 ()
+"15kt  fission"  50  50  25  80  3  90  15000  290   5 ()
+"50kt  fission"  60  60  30  90  3 100  25000  300   6 ()
+"100kt fission"  75  75  40 120  4 125  30000  310   8 ()
+"5kt   fusion"   15  15  15  30  2  80  12500  315   1 ()
+"75kt  fusion"   40  40  35  50  3  90  20000  320   3 ()
+"250kt fusion"   50  50  45  60  4 110  25000  330   4 ()
+"500kt fusion"   60  60  50  80  5 120  35000  340   5 ()
+"1mt   fusion"   75  75  50 110  6 150  40000  350   5 ()
+"60kt  neutron"  60  60  30 100  3  30  30000  355   2 (neutron)
+"3mt   fusion"  100 100  75 130  7 170  45000  360   6 ()
+"5mt   fusion"  120 120 100 150  8 190  50000  370   8 ()
+"120kt neutron"  75  75  40 120  5  50  36000  375   3 (neutron)
+/config
index 4ffd98125cb64e3f89269c0c27031e117ab57d3f..915c602bd01c10192105195f9a5f1241223062e9 100644 (file)
  *     Steve McClure, 1998
  */
 
-/*
- * plane characteristics
- * flags indicate capabilities of craft...
- * P_T: tactical, P_F: fighter/interceptor, P_B: bomber,
- * P_C: cargo, P_G: glider, P_V: vtol, P_M: (one-shot) missile
- * P_L: light, can land on carriers.
- * P_O: orbits (sat's & anti-sats), P_N: nuke killer (SDI)
- * P_X: stealthy
- * P_E: Extra light
- * P_K: Chopper
- * P_P: Can paratroop
- * P_A: ASW plane, can find subs when reconning, can bomb subs
- * P_R: recon plane, gets some info
- * P_I: Image capability (advanced spying)
- * 
- * Note if a plane is P_M (a missile) then it will automatically be made
- * P_V (vtol) in init_global()
- */
-
 #include <config.h>
 
 #include "misc.h"
 #include "plane.h"
 
-struct plchrstr plchr[] = {
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "f1   Sopwith Camel",
-     8, 2, 400, 50, 90, 1, 1, 1, 4, 1, 1,
-     0,
-     P_V | P_T | P_F},
-
-/* name        lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "f2   P-51 Mustang",
-     8, 2, 400, 80, 80, 1, 4, 4, 8, 1, 1,
-     0,
-     P_L | P_T | P_F},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "jf1  F-4 Phantom",
-     12, 4, 1000, 125, 45, 1, 14, 14, 11, 2, 3,
-     0,
-     P_T | P_F | P_L},
-
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "jf2  AV-8B Harrier",
-     12, 4, 1400, 195, 30, 1, 17, 17, 14, 2, 3,
-     0,
-     P_T | P_F | P_L | P_V},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "sf   F-117A Nighthawk",
-     15, 5, 3000, 325, 45, 3, 19, 19, 20, 2, 4,
-     80,
-     P_T | P_F | P_L},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "es   P-38 Lightning",
-     9, 3, 700, 90, 60, 1, 5, 5, 15, 1, 2,
-     0,
-     P_ESC | P_T},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "jes  F-14E jet escort",
-     14, 8, 1400, 160, 60, 1, 10, 10, 25, 2, 3,
-     0,
-     P_ESC | P_T},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "lb   TBD-1 Devastator",
-     10, 3, 550, 60, 50, 2, 0, 3, 7, 1, 1,
-     0,
-     P_L | P_V | P_T | P_B},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "jl   A-6 Intruder",
-     14, 4, 1000, 130, 25, 3, 0, 9, 11, 2, 3,
-     0,
-     P_T | P_B | P_L},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "mb   medium bomber",
-     14, 5, 1000, 80, 45, 4, 0, 5, 14, 3, 3,
-     0,
-     P_T | P_B},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "jfb  FB-111 Aardvark f/b",
-     20, 10, 1800, 140, 30, 7, 8, 8, 20, 5, 5,
-     0,
-     P_T | P_B},
-    {
-     "hb   B-26B Marauder",
-     20, 6, 1100, 90, 90, 5, 0, 4, 15, 2, 2,
-     0,
-     P_B},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "jhb  B-52 Strato-Fortress",
-     26, 13, 3200, 150, 80, 12, 0, 11, 35, 5, 6,
-     0,
-     P_B},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "sb   B-2 stealth bomber",
-     15, 5, 4000, 325, 25, 8, 0, 15, 28, 2, 5,
-     80,
-     P_T | P_B},
-
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "as   anti-sub plane",
-     10, 3, 550, 100, 85, 2, 0, 3, 15, 2, 2,
-     0,
-     P_SWEEP | P_MINE | P_T | P_A},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "np   naval plane",
-     20, 10, 1800, 135, 70, 3, 0, 4, 28, 4, 2,
-     0,
-     P_SWEEP | P_MINE | P_C | P_T | P_A | P_L},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "nc   AH-1 Cobra",
-     8, 2, 800, 160, 55, 2, 0, 3, 11, 2, 2,
-     0,
-     P_V | P_SWEEP | P_T | P_A | P_K},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "ac   AH-64 Apache",
-     8, 2, 800, 200, 15, 1, 0, 9, 11, 2, 2,
-     40,
-     P_V | P_T | P_K},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "tc   transport chopper",
-     8, 2, 800, 135, 0, 5, 0, 3, 7, 2, 2,
-     40,
-     P_V | P_C | P_P | P_L | P_K},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "tr   C-56 Lodestar",
-     14, 5, 1000, 85, 0, 7, 0, 2, 15, 3, 3,
-     0,
-     P_C | P_P},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "jt   C-141 Starlifter",
-     18, 5, 1500, 160, 0, 16, 0, 9, 35, 3, 4,
-     0,
-     P_C | P_P},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "zep  Zeppelin",
-     6, 2, 1000, 70, 60, 2, 0, -3, 15, 3, 2,
-     0,
-     P_S | P_V | P_T | P_C},
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "re   recon",
-     12, 4, 800, 130, 0, 0, 0, 4, 15, 2, 2,
-     20,
-     P_S},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "sp   E2-C Hawkeye",
-     15, 5, 2000, 190, 0, 0, 0, 11, 32, 2, 5,
-     50,
-     P_S},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "lst  landsat",
-     20, 20, 2000, 245, 0, 0, 0, 3, 41, 0, 9,
-     0,
-     P_O},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "ss   KH-7 spysat",
-     20, 20, 4000, 305, 0, 0, 0, 3, 61, 0, 9,
-     0,
-     P_I | P_O | P_S},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "mi   Harpoon",
-     8, 2, 300, 160, 50, 6, 0, 5, 6, 0, 0,
-     0,
-     P_L | P_T | P_M | P_MAR},
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "sam  Sea Sparrow",
-     3, 1, 200, 180, 0, 0, 0, 18, 2, 0, 0,
-     0,
-     P_L | P_F | P_E | P_M},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "ssm  V2",
-     15, 15, 800, 145, 60, 3, 0, 3, 4, 0, 0,
-     0,
-     P_T | P_M},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "srbm Atlas",
-     20, 20, 1000, 200, 60, 6, 0, 5, 9, 0, 0,
-     0,
-     P_T | P_M},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "irbm Titan",
-     20, 20, 1500, 260, 60, 8, 0, 10, 15, 0, 0,
-     0,
-     P_T | P_M},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "icbm Minuteman",
-     20, 20, 3000, 310, 60, 10, 0, 15, 41, 0, 0,
-     0,
-     P_T | P_M},
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "slbm Trident",
-     20, 20, 2000, 280, 60, 8, 0, 6, 23, 0, 0,
-     0,
-     P_T | P_L | P_M},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "asat anti-sat",
-     20, 20, 2000, 305, 50, 6, 0, 7, 13, 0, 4,
-     0,
-     P_O | P_M},
-
-/* name          lcm hcm   $$$  tch acc ld  at/df  ran mil gas stlth  flags */
-    {
-     "abm  Patriot",
-     16, 8, 1500, 270, 50, 0, 0, 31, 12, 0, 0,
-     0,
-     P_N | P_M},
-    {
-     NULL,
-     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-     0,
-     0}
-};
+/*
+ * Table of plane types
+ * Initialized on startup from plane.config and deity custom config (if any).
+ */
+struct plchrstr plchr[];
diff --git a/src/lib/global/plane.config b/src/lib/global/plane.config
new file mode 100644 (file)
index 0000000..e5fb8b8
--- /dev/null
@@ -0,0 +1,84 @@
+#
+#   Empire - A multi-player, client/server Internet based war game.
+#   Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
+#                            Ken Stevens, Steve McClure
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+#   ---
+#
+#   See files README, COPYING and CREDITS in the root of the source
+#   tree for related information and legal notices.  It is expected
+#   that future projects/authors will amend these files as needed.
+#
+#   ---
+#
+#   plane.config: Plane characteristics
+#
+#   Known contributors to this file:
+#      Markus Armbruster, 2006
+#
+#   Derived from plane.c; known contributors:
+#      Dave Pare, 1986
+#      Jeff Bailey
+#      Thomas Ruschak, 1992
+#      Ken Stevens, 1995
+#      Steve McClure, 1998
+#
+
+# Available flags are in plane_chr_flags[].  info Plane-types should
+# document them all.
+#
+# Note if a flag missile is set, then flag VTOL will automatically be
+# set by init_plchr().
+
+config plane-chr
+name                       l_b h_b cost tech acc loa att def ran cr fu ste flags
+"f1   Sopwith Camel"         8   2  400   50  90   1   1   1   4  1  1   0 (tactical intercept VTOL)
+"f2   P-51 Mustang"          8   2  400   80  80   1   4   4   8  1  1   0 (tactical intercept light)
+"jf1  F-4 Phantom"          12   4 1000  125  45   1  14  14  11  2  3   0 (tactical intercept light)
+"jf2  AV-8B Harrier"        12   4 1400  195  30   1  17  17  14  2  3   0 (tactical intercept VTOL light)
+"sf   F-117A Nighthawk"     15   5 3000  325  45   3  19  19  20  2  4  80 (tactical intercept light)
+"es   P-38 Lightning"        9   3  700   90  60   1   5   5  15  1  2   0 (tactical escort)
+"jes  F-14E jet escort"     14   8 1400  160  60   1  10  10  25  2  3   0 (tactical escort)
+"lb   TBD-1 Devastator"     10   3  550   60  50   2   0   3   7  1  1   0 (bomber tactical VTOL light)
+"jl   A-6 Intruder"         14   4 1000  130  25   3   0   9  11  2  3   0 (bomber tactical light)
+"mb   medium bomber"        14   5 1000   80  45   4   0   5  14  3  3   0 (bomber tactical)
+"jfb  FB-111 Aardvark f/b"  20  10 1800  140  30   7   8   8  20  5  5   0 (bomber tactical)
+"hb   B-26B Marauder"       20   6 1100   90  90   5   0   4  15  2  2   0 (bomber)
+"jhb  B-52 Strato-Fortress" 26  13 3200  150  80  12   0  11  35  5  6   0 (bomber)
+"sb   B-2 stealth bomber"   15   5 4000  325  25   8   0  15  28  2  5  80 (bomber tactical)
+"as   anti-sub plane"       10   3  550  100  85   2   0   3  15  2  2   0 (tactical ASW mine sweep)
+"np   naval plane"          20  10 1800  135  70   3   0   4  28  4  2   0 (tactical cargo light ASW mine sweep)
+"nc   AH-1 Cobra"            8   2  800  160  55   2   0   3  11  2  2   0 (tactical VTOL helo ASW sweep)
+"ac   AH-64 Apache"          8   2  800  200  15   1   0   9  11  2  2  40 (tactical VTOL helo)
+"tc   transport chopper"     8   2  800  135   0   5   0   3   7  2  2  40 (cargo VTOL light helo para)
+"tr   C-56 Lodestar"        14   5 1000   85   0   7   0   2  15  3  3   0 (cargo para)
+"jt   C-141 Starlifter"     18   5 1500  160   0  16   0   9  35  3  4   0 (cargo para)
+"zep  Zeppelin"              6   2 1000   70  60   2   0  -3  15  3  2   0 (tactical cargo VTOL spy)
+"re   recon"                12   4  800  130   0   0   0   4  15  2  2  20 (spy)
+"sp   E2-C Hawkeye"         15   5 2000  190   0   0   0  11  32  2  5  50 (spy)
+"lst  landsat"              20  20 2000  245   0   0   0   3  41  0  9   0 (satellite)
+"ss   KH-7 spysat"          20  20 4000  305   0   0   0   3  61  0  9   0 (spy image satellite)
+"mi   Harpoon"               8   2  300  160  50   6   0   5   6  0  0   0 (tactical VTOL missile light marine)
+"sam  Sea Sparrow"           3   1  200  180   0   0   0  18   2  0  0   0 (intercept VTOL missile light x-light)
+"ssm  V2"                   15  15  800  145  60   3   0   3   4  0  0   0 (tactical VTOL missile)
+"srbm Atlas"                20  20 1000  200  60   6   0   5   9  0  0   0 (tactical VTOL missile)
+"irbm Titan"                20  20 1500  260  60   8   0  10  15  0  0   0 (tactical VTOL missile)
+"icbm Minuteman"            20  20 3000  310  60  10   0  15  41  0  0   0 (tactical VTOL missile)
+"slbm Trident"              20  20 2000  280  60   8   0   6  23  0  0   0 (tactical VTOL missile light)
+"asat anti-sat"             20  20 2000  305  50   6   0   7  13  0  4   0 (VTOL missile satellite)
+"abm  Patriot"              16   8 1500  270  50   0   0  31  12  0  0   0 (VTOL missile SDI)
+/config
index cf912200473469ac2a89ac22fef71f55562a3920..0c85245f91b5228c89bb3fabdd564b1dc935420d 100644 (file)
  *     Steve McClure, 1998
  */
 
-/*
- * marine characteristics -- ship capabilities descriptions
- * 
- * Note, that you should not set the flags M_XLIGHT or M_CHOPPER
- * here.  They will be automatically set by init_global() when the server
- * starts if the ship can carry a non-zero amount of those things.
- * Also note that if nplanes > 0 and M_FLY is not set, then M_MSL will
- * automatically be set.
- */
-
 #include <config.h>
 
 #include "misc.h"
 #include "ship.h"
 
-struct mchrstr mchr[] = {
-/*          a   s   v  v   f       E  K   f  f                               */
-/*          r   p   i  r   r   g   |  |   u  u                               */
-/* l   h    m   e   s  n   n   l   x  V   e  e                               */
-/* c   c    o   e   i  g   g   i   p  p   l  l                               */
-/* m   m    r   d   b  e   e   m   l  l   c  u  name                tech  Cost*/
-
-    {{300,  10,   0,   0,   0,   0,   0,   0, 900,   0,   0,   0,  15,   0},
-     25, 15, 10, 10, 15, 2, 0, 0, 0, 0, 0, 0, "fb   fishing boat",
-     0, 180, M_FOOD | M_CANAL, 0, 0},
-
-    {{300,  10,   0,   0,   0,   0,   0,   0, 900,   0,   0,   0,  15,   0},
-     25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ft   fishing trawler",
-     35, 300, M_FOOD | M_CANAL, 0, 0},
-
-    {{600,  50, 300,  50,   0,   0,   0,   0, 900,   0,1400, 900, 250,   0},
-     60, 40, 20, 25, 35, 3, 0, 0, 1, 0, 0, 0, "cs   cargo ship",
-     20, 500, M_SUPPLY, 0, 2},
-
-    {{30,   5,   0,   0,   0, 990, 990,   0, 200,   0,   0,   0,  45, 990},
-     60, 40, 20, 25, 35, 3, 0, 0, 1, 0, 30, 1, "os   ore ship",
-     20, 500, 0, 0, 0},
-
-    {{20,  80,   0,   0,   0,   0,   0,   0, 200,   0,   0,   0,1200,   0},
-     60, 40, 20, 10, 35, 3, 0, 0, 1, 0, 0, 0, "ss   slave ship",
-     0, 300, 0, 0, 0},
-
-    {{50,  50,   0,   0,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0},
-     200, 100, 20, 25, 35, 3, 0, 0, 1, 0, 30, 1, "ts   trade ship",
-     30, 1750, M_TRADE, 0, 0},
-
-    {{0,  60,  10,   2,   0,   0,   0,   0,  60,   0,   0,   0,   0,   0},
-     30, 30, 50, 25, 25, 3, 1, 1, 1, 0, 0, 0, "frg  frigate",
-     0, 600, M_SEMILAND, 0, 2},
-
-    {{10,   5,   0,   0,   0,   0,   0,   0, 100,   1,   0,   0,   0,   0},
-     25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "oe   oil exploration boat",
-     40, 800, M_OIL | M_CANAL, 0, 0},
-
-    {{990,  80,   0,   0,   0,   0,   0,   0, 990, 990,   0,   0, 990,   0},
-     60, 60, 30, 15, 65, 3, 0, 0, 2, 0, 0, 0, "od   oil derrick",
-     50, 1500, M_OIL, 0, 0},
-
-    {{0,   2,  12,   2,   0,   0,   0,   0,   5,   0,   0,   0,   0,   0},
-     20, 10, 10, 38, 10, 2, 1, 1, 0, 0, 4, 1, "pt   patrol boat",
-     40, 300, M_TORP | M_CANAL, 0, 0},
-
-    {{0, 100,  40,   5,   0,   0,   0,   0, 100,   0,   0,   0,   0,   0},
-     30, 40, 50, 30, 30, 5, 6, 3, 1, 0, 40, 1, "lc   light cruiser",
-     45, 800, M_MINE, 0, 2 },
-
-    {{0, 120, 100,   8,   0,   0,   0,   0, 200,   0,   0,   0,   0,   0},
-     40, 50, 70, 30, 30, 5, 8, 4, 1, 0, 30, 1, "hc   heavy cruiser",
-     50, 1200, 0, 0, 4},
-
-    {{0, 120,  20,   4,   0,   0,   0,   0, 120,   0,   0,   0,   0,   0},
-     50, 50, 60, 20, 35, 3, 1, 2, 1, 0, 0, 0, "tt   troop transport",
-     10, 800, M_SEMILAND, 0, 2 },
-
-    {{0, 200, 200,  10,   0,   0,   0,   0, 900,   0,   0,   0,   0,   0},
-     50, 70, 95, 25, 35, 6, 10, 7, 1, 0, 50, 2, "bb   battleship",
-     45, 1800, 0, 0, 2},
-
-    {{0, 180, 100,  10,   0,   0,   0,   0, 400,   0,   0,   0,   0,   0},
-     50, 60, 55, 30, 35, 6, 10, 6, 1, 0, 60, 2, "bbc  battlecruiser",
-     75, 1500, 0, 0, 2},
-
-    {{30,   5,   0,   0, 990,   0,   0,   0, 200, 990,   0,   0,  25,   0},
-     60, 40, 75, 25, 45, 3, 0, 0, 1, 0, 30, 1, "tk   tanker",
-     35, 600, M_OILER | M_SUPPLY, 0, 0},
-
-    {{0,  10, 100,   1,   0,   0,   0,   0,  90,   0,   0,   0,   0,   0},
-     25, 15, 10, 25, 15, 2, 0, 0, 0, 0, 20, 1, "ms   minesweeper",
-     40, 400, M_MINE | M_SWEEP | M_CANAL, 0, 0},
-
-    {{0,  60,  40,   4,   0,   0,   0,   0,  80,   0,   0,   0,   0,   0},
-     30, 30, 45, 35, 20, 4, 6, 3, 1, 0, 30, 1, "dd   destroyer",
-     70, 600, M_MINE | M_DCH | M_SONAR, 0, 1},
-
-    {{0,  25,  36,   5,   0,   0,   0,   0,  80,   0,   0,   0,   0,   0},
-     30, 30, 25, 20, 5, 4, 3, 3, 0, 0, 30, 1, "sb   submarine",
-     60, 650, M_TORP | M_SUB | M_MINE | M_SONAR, 0, 0},
-
-    {{5,  10, 104,  20, 100,   0,   0,   0, 900,   0, 500, 300,   0,   0},
-     40, 40, 50, 30, 2, 3, 0, 0, 0, 0, 50, 2, "sbc  cargo submarine",
-     150, 1200, M_SUPPLY | M_OILER | M_SUB | M_SONAR, 0, 0},
-
-    {{0, 175, 250,   4, 300,   0,   0,   0, 180,   0,   0,   0,   0,   0},
-     50, 60, 60, 30, 40, 5, 2, 2, 4, 20, 50, 2, "cal  light carrier",
-     80, 2700, M_FLY, 20, 0},
-
-    {{0, 350, 500,   4, 500,   0,   0,   0, 900,   0,   0,   0,   0,   0},
-     60, 70, 80, 35, 40, 7, 2, 2, 10, 40, 120, 3, "car  aircraft carrier",
-     160, 4500, M_FLY, 40, 0},
-
-    {{0, 350, 999,   4, 999,   0,   0,   0, 900,   0,   0,   0,   0,   0},
-     70, 80, 100, 45, 40, 9, 2, 2, 20, 4, 0, 0, "can  nuc carrier",
-     305, 8000, M_OILER | M_FLY | M_SUPPLY, 60, 0},
-
-    {{0, 400,  10,   1,   0,   0,   0,   0, 300,   0,   0,   0,   0,   0},
-     60, 40, 40, 30, 30, 2, 0, 0, 2, 0, 30, 1, "ls   landing ship",
-     145, 1000, M_LAND, 0, 6},
-
-    {{0,  60,  60,   4,   0,   0,   0,   0, 120,   0,   0,   0,   0,   0},
-     40, 30, 50, 35, 30, 5, 2, 2, 4, 0, 40, 1, "af   asw frigate",
-     220, 800, M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0},
-
-    {{0,  25,  60,   6,   0,   0,   0,   0, 500,   0,   0,   0,   0,   0},
-     30, 40, 45, 40, 3, 6, 5, 3, 0, 0, 0, 0, "na   nuc attack sub",
-     260, 1200, M_TORP | M_SUB | M_MINE | M_SONAR | M_SUBT, 0, 0},
-
-    {{0, 100,  80,   6,  40,   0,   0,   0, 500,   0,   0,   0,   0,   0},
-     40, 40, 60, 40, 35, 6, 8, 3, 10, 2, 80, 2, "ad   asw destroyer",
-     240, 1500, M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0},
-
-    {{0,  25, 200,   1,   0,   0,   0,   0, 500,   0,   0,   0,   0,   0},
-     30, 40, 55, 35, 2, 6, 0, 0, 0, 0, 0, 0, "nm   nuc miss sub",
-     270, 1500, M_SUB | M_SONAR, 20, 0},
-
-    {{0,  25, 100,   1,   0,   0,   0,   0, 500,   0,   0,   0,   0,   0},
-     30, 30, 35, 30, 3, 3, 0, 0, 0, 0, 30, 1, "msb  missile sub",
-     230, 1200, M_SUB | M_SONAR, 10, 0},
-
-    {{0,   5, 100,   3,   0,   0,   0,   0, 500,   0,   0,   0,   0,   0},
-     20, 20, 15, 40, 15, 3, 2, 2, 0, 0, 7, 1, "mb   missile boat",
-     180, 500, 0, 10, 0},
-
-    {{0,  60, 220,   4,   0,   0,   0,   0, 120,   0,   0,   0,   0,   0},
-     40, 30, 50, 35, 30, 5, 2, 2, 2, 0, 30, 1, "mf   missile frigate",
-     280, 1000, 0, 20, 0},
-
-    {{0, 120, 500,   6, 160,   0,   0,   0, 200,   0,   0,   0,   0,   0},
-     50, 50, 70, 35, 35, 8, 8, 6, 8, 8, 35, 1, "mc   missile cruiser",
-     290, 1500, M_ANTIMISSILE, 40, 0},
-
-    {{0, 100, 100,  15,   0,   0,   0,   0, 200,   0,   0,   0,   0,   0},
-     50, 60, 80, 35, 30, 6, 1, 8, 1, 0, 60, 2, "aac  aa cruiser",
-     130, 1500, M_ANTIMISSILE, 0, 4},
-
-    {{0, 200, 400,  25,  40,   0,   0,   0, 900,   0,   0,   0,   0,   0},
-     50, 60, 80, 35, 30, 6, 1, 16, 30, 2, 0, 0, "agc  aegis cruiser",
-     265, 4000, M_ANTIMISSILE, 32, 0},
-
-    {{0, 200, 400,   8,  40,   0,   0,   0, 900,   0,   0,   0,   0,   0},
-     50, 50, 100, 45, 35, 6, 14, 7, 10, 2, 0, 0, "ncr  nuc cruiser",
-     325, 1800, M_ANTIMISSILE, 20, 0},
-
-    {{0, 200, 120,   6, 160,   0,   0,   0, 500,   0,   0,   0,   0,   0},
-     50, 50, 80, 45, 35, 9, 10, 4, 25, 8, 0, 0, "nas  nuc asw cruiser",
-     330, 1800, M_TORP | M_SUBT | M_DCH | M_SONAR, 0, 0},
-
-/*     c    m    s    g    p    i    d    b    f    o    l    h    u    r */
-    {{50,  50, 600,  50, 999,   0,   0,   0, 999,   0,1500, 900,   0,   0},
-     60, 40, 40, 45, 35, 6, 0, 0, 10, 2, 0, 0, "nsp  nuc supply ship",
-     360, 1500, M_SUPPLY, 0, 2},
-
-    {{0},
-     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL,
-     0, 0, 0, 0, 0}
-};
+/*
+ * Table of ship types
+ * Initialized on startup from ship.config and deity custom config (if any).
+ */
+struct mchrstr mchr[];
diff --git a/src/lib/global/ship.config b/src/lib/global/ship.config
new file mode 100644 (file)
index 0000000..81bc7b8
--- /dev/null
@@ -0,0 +1,88 @@
+#
+#   Empire - A multi-player, client/server Internet based war game.
+#   Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
+#                            Ken Stevens, Steve McClure
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+#   ---
+#
+#   See files README, COPYING and CREDITS in the root of the source
+#   tree for related information and legal notices.  It is expected
+#   that future projects/authors will amend these files as needed.
+#
+#   ---
+#
+#   ship.config: Ship characteristics
+#
+#   Known contributors to this file:
+#      Markus Armbruster, 2006
+#
+#   Derived from ship.c; known contributors:
+#      Dave Pare, 1986
+#      Jeff Bailey
+#      Thomas Ruschak, 1992
+#      Ken Stevens, 1995
+#      Steve McClure, 1998
+#
+
+# Available flags are in ship_chr_flags[].  info Ship-types should
+# document them all.
+#
+# Note that you can't set the flags M_XLIGHT or M_CHOPPER here.  They
+# will be automatically set by init_mchr() if the ship can carry a
+# non-zero amount of those things.  Also note that if nplanes > 0 and
+# flag plane is not set, then flag miss will automatically be set.
+
+config ship-chr
+name                       l_b h_b tec cost ar spe vi vr fr gl nx nc fuelc fuelu np nl civ mil she gun pet iro dus bar foo oil lcm hcm uw rad flags
+"fb   fishing boat"          25  15   0  180  10 10 15  2  0  0  0  0   0  0  0  0 300  10   0   0   0   0   0   0 900   0    0   0   15   0 (fish canal)
+"ft   fishing trawler"       25  15  35  300  10 25 15  2  0  0  0  0  20  1  0  0 300  10   0   0   0   0   0   0 900   0    0   0   15   0 (fish canal)
+"cs   cargo ship"            60  40  20  500  20 25 35  3  0  0  1  0   0  0  0  2 600  50 300  50   0   0   0   0 900   0 1400 900  250   0 (supply)
+"os   ore ship"              60  40  20  500  20 25 35  3  0  0  1  0  30  1  0  0  30   5   0   0   0 990 990   0 200   0    0   0   45 990 ()
+"ss   slave ship"            60  40   0  300  20 10 35  3  0  0  1  0   0  0  0  0  20  80   0   0   0   0   0   0 200   0    0   0 1200   0 ()
+"ts   trade ship"           200 100  30 1750  20 25 35  3  0  0  1  0  30  1  0  0  50  50   0   0   0   0   0   0 100   0    0   0    0   0 (trade)
+"frg  frigate"               30  30   0  600  50 25 25  3  1  1  1  0   0  0  0  2   0  60  10   2   0   0   0   0  60   0    0   0    0   0 (semi-land)
+"oe   oil exploration boat"  25  15  40  800  10 25 15  2  0  0  0  0  20  1  0  0  10   5   0   0   0   0   0   0 100   1    0   0    0   0 (oil canal)
+"od   oil derrick"           60  60  50 1500  30 15 65  3  0  0  2  0   0  0  0  0 990  80   0   0   0   0   0   0 990 990    0   0  990   0 (oil)
+"pt   patrol boat"           20  10  40  300  10 38 10  2  1  1  0  0   4  1  0  0   0   2  12   2   0   0   0   0   5   0    0   0    0   0 (torp canal)
+"lc   light cruiser"         30  40  45  800  50 30 30  5  6  3  1  0  40  1  0  2   0 100  40   5   0   0   0   0 100   0    0   0    0   0 (mine)
+"hc   heavy cruiser"         40  50  50 1200  70 30 30  5  8  4  1  0  30  1  0  4   0 120 100   8   0   0   0   0 200   0    0   0    0   0 ()
+"tt   troop transport"       50  50  10  800  60 20 35  3  1  2  1  0   0  0  0  2   0 120  20   4   0   0   0   0 120   0    0   0    0   0 (semi-land)
+"bb   battleship"            50  70  45 1800  95 25 35  6 10  7  1  0  50  2  0  2   0 200 200  10   0   0   0   0 900   0    0   0    0   0 ()
+"bbc  battlecruiser"         50  60  75 1500  55 30 35  6 10  6  1  0  60  2  0  2   0 180 100  10   0   0   0   0 400   0    0   0    0   0 ()
+"tk   tanker"                60  40  35  600  75 25 45  3  0  0  1  0  30  1  0  0  30   5   0   0 990   0   0   0 200 990    0   0   25   0 (oiler supply)
+"ms   minesweeper"           25  15  40  400  10 25 15  2  0  0  0  0  20  1  0  0   0  10 100   1   0   0   0   0  90   0    0   0    0   0 (mine sweep canal)
+"dd   destroyer"             30  30  70  600  45 35 20  4  6  3  1  0  30  1  0  1   0  60  40   4   0   0   0   0  80   0    0   0    0   0 (dchrg sonar mine)
+"sb   submarine"             30  30  60  650  25 20  5  4  3  3  0  0  30  1  0  0   0  25  36   5   0   0   0   0  80   0    0   0    0   0 (torp sonar mine sub)
+"sbc  cargo submarine"       40  40 150 1200  50 30  2  3  0  0  0  0  50  2  0  0   5  10 104  20 100   0   0   0 900   0  500 300    0   0 (sonar sub oiler supply)
+"cal  light carrier"         50  60  80 2700  60 30 40  5  2  2  4 20  50  2 20  0   0 175 250   4 300   0   0   0 180   0    0   0    0   0 (plane)
+"car  aircraft carrier"      60  70 160 4500  80 35 40  7  2  2 10 40 120  3 40  0   0 350 500   4 500   0   0   0 900   0    0   0    0   0 (plane)
+"can  nuc carrier"           70  80 305 8000 100 45 40  9  2  2 20  4   0  0 60  0   0 350 999   4 999   0   0   0 900   0    0   0    0   0 (plane oiler supply)
+"ls   landing ship"          60  40 145 1000  40 30 30  2  0  0  2  0  30  1  0  6   0 400  10   1   0   0   0   0 300   0    0   0    0   0 (land)
+"af   asw frigate"           40  30 220  800  50 35 30  5  2  2  4  0  40  1  0  0   0  60  60   4   0   0   0   0 120   0    0   0    0   0 (torp dchrg sonar sub-torp)
+"na   nuc attack sub"        30  40 260 1200  45 40  3  6  5  3  0  0   0  0  0  0   0  25  60   6   0   0   0   0 500   0    0   0    0   0 (torp sonar min sub sub-torp)
+"ad   asw destroyer"         40  40 240 1500  60 40 35  6  8  3 10  2  80  2  0  0   0 100  80   6  40   0   0   0 500   0    0   0    0   0 (torp dchrg sonar sub-torp)
+"nm   nuc miss sub"          30  40 270 1500  55 35  2  6  0  0  0  0   0  0 20  0   0  25 200   1   0   0   0   0 500   0    0   0    0   0 (sonar sub)
+"msb  missile sub"           30  30 230 1200  35 30  3  3  0  0  0  0  30  1 10  0   0  25 100   1   0   0   0   0 500   0    0   0    0   0 (sonar sub)
+"mb   missile boat"          20  20 180  500  15 40 15  3  2  2  0  0   7  1 10  0   0   5 100   3   0   0   0   0 500   0    0   0    0   0 ()
+"mf   missile frigate"       40  30 280 1000  50 35 30  5  2  2  2  0  30  1 20  0   0  60 220   4   0   0   0   0 120   0    0   0    0   0 ()
+"mc   missile cruiser"       50  50 290 1500  70 35 35  8  8  6  8  8  35  1 40  0   0 120 500   6 160   0   0   0 200   0    0   0    0   0 (anti-missile)
+"aac  aa cruiser"            50  60 130 1500  80 35 30  6  1  8  1  0  60  2  0  4   0 100 100  15   0   0   0   0 200   0    0   0    0   0 (anti-missile)
+"agc  aegis cruiser"         50  60 265 4000  80 35 30  6  1 16 30  2   0  0 32  0   0 200 400  25  40   0   0   0 900   0    0   0    0   0 (anti-missile)
+"ncr  nuc cruiser"           50  50 325 1800 100 45 35  6 14  7 10  2   0  0 20  0   0 200 400   8  40   0   0   0 900   0    0   0    0   0 (anti-missile)
+"nas  nuc asw cruiser"       50  50 330 1800  80 45 35  9 10  4 25  8   0  0  0  0   0 200 120   6 160   0   0   0 500   0    0   0    0   0 (torp dchrg sonar sub-torp)
+"nsp  nuc supply ship"       60  40 360 1500  40 45 35  6  0  0 10  2   0  0  0  2  50  50 600  50 999   0   0   0 999   0 1500 900    0   0 (supply)
+/config