/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2008, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure
*
* This program is free software; you can redistribute it and/or modify
* ---
*
* econfig-spec.h: Combined include for optlist.h and emp_config.c
- *
+ *
* Known contributors to this file:
* Marc Olzheim, 2004
- * Markus Armbruster, 2004-2006
+ * Markus Armbruster, 2004-2008
*/
/*
#if defined(EMP_CONFIG_C_OUTPUT)
-#define EMPCFONLYC(fvname, vname, vtype, ctype, num, descr) \
- { (fvname), (ctype), &(vname), (num), (descr) },
-#define EMPCFBOTH(fvname, vname, vtype, ctype, num, descr) \
- { (fvname), (ctype), &(vname), (num), (descr) },
+#define EMPCFONLYC(fvname, vname, vtype, ctype, flags, descr) \
+ { (fvname), (ctype), &(vname), (flags), (descr) },
+#define EMPCFBOTH(fvname, vname, vtype, ctype, flags, descr) \
+ { (fvname), (ctype), &(vname), (flags), (descr) },
#elif defined(EMP_CONFIG_H_OUTPUT)
-#define EMPCFONLYC(fvname, vname, vtype, ctype, num, descr)
-#define EMPCFBOTH(fvname, vname, vtype, ctype, num, descr) \
+#define EMPCFONLYC(fvname, vname, vtype, ctype, flags, descr)
+#define EMPCFBOTH(fvname, vname, vtype, ctype, flags, descr) \
extern vtype vname;
#endif /* EMP_CONFIG_C_OUTPUT || EMP_CONFIG_H_OUTPUT */
EMPCF_COMMENT("\n### Server configuration and information")
EMPCFBOTH("custom_tables", custom_tables, char *, NSC_STRING, KM_INTERNAL,
"Custom configuration table files, separated by space")
-EMPCFBOTH("data", gamedir, char *, NSC_STRING, KM_INTERNAL,
+EMPCFBOTH("data", gamedir_conf, char *, NSC_STRING, KM_INTERNAL,
"Directory where this game's data is stored")
-EMPCFBOTH("info", infodir, char *, NSC_STRING, KM_INTERNAL,
+EMPCFBOTH("info", infodir_conf, char *, NSC_STRING, KM_INTERNAL,
"Directory where info pages are stored, can be shared among games")
-EMPCF_COMMENT("# Note: Use an absolute name here, the interpretation of a relative\n"
- "# name may change.")
-EMPCFBOTH("builtin", builtindir, char *, NSC_STRING, KM_INTERNAL,
+EMPCF_COMMENT("# Set this to your build tree's info.nr to run the server without\n"
+ "# installing it.")
+EMPCFBOTH("builtin", builtindir_conf, char *, NSC_STRING, KM_INTERNAL,
"Directory where builtin files are stored")
EMPCF_COMMENT("# Set this to your source tree's src/lib/global to run the server\n"
"# without installing it, else leave it alone.")
EMPCFBOTH("listen_addr", listen_addr, char *, NSC_STRING, KM_INTERNAL,
- "Local IP address the server should listen on.")
-EMPCF_COMMENT("# \"\" listens on all, localhost just on the loopback interface")
+ "Local IP address the server should listen on")
+EMPCF_COMMENT("# \"\" listens on all, localhost just on the loopback interface.")
EMPCFBOTH("port", loginport, char *, NSC_STRING, KM_INTERNAL,
"TCP port the server will bind")
EMPCFBOTH("keep_journal", keep_journal, int, NSC_INT, KM_INTERNAL,
"Enable journal log file")
+EMPCFBOTH("post_crash_dump_hook", post_crash_dump_hook, char *, NSC_STRING, KM_INTERNAL,
+ "Shell command run right after a crash dump, in the game's data directory")
EMPCFBOTH("privname", privname, char *, NSC_STRING, 0,
"Name of the deity")
EMPCFBOTH("privlog", privlog, char *, NSC_STRING, 0,
EMPCFBOTH("WORLD_Y", WORLD_Y, int, NSC_INT, 0,
"World size Y dimension")
-EMPCF_COMMENT("\n\n### Update policy")
-EMPCFBOTH("update_policy", update_policy, int, NSC_INT, 0,
- "Update policy")
-EMPCF_COMMENT("# 0 - Schedule updates according to etu_per_update, s_p_etu, adj_update\n"
- "# 1 - Update at times specified by key \"update_times\"\n"
- "# 2 - Blitz update every blitz_time minute\n"
- "# 3 - No regular updates, only demand ones")
+EMPCF_COMMENT("\n\n### Update policy\n\n"
+ "# Note: the update schedule is defined in the file schedule in the\n"
+ "# same directory as this file.")
EMPCFBOTH("etu_per_update", etu_per_update, int, NSC_INT, 0,
"Number of ETUs per update")
-EMPCFBOTH("s_p_etu", s_p_etu, int, NSC_INT, 0,
- "Seconds per ETU")
-EMPCF_COMMENT("# updates under policy 0 occur every s_p_etu * etu_per_update seconds")
-EMPCFBOTH("adj_update", adj_update, int, NSC_INT, KM_INTERNAL,
- "Move the update forward or backward (in seconds)")
EMPCFBOTH("update_window", update_window, int, NSC_INT, 0,
- "Window the update will occur in (in seconds) before and after the update time")
-EMPCFBOTH("update_times", update_times, char *, NSC_STRING, 0,
- "Times of day when updates may occur under policy 1, separated by space.")
-EMPCF_COMMENT("# Give time of day as HOUR:MINUTE, e.g. 20:00\n"
- "# Times must coincide with updates under policy 0.")
-EMPCFBOTH("hourslop", hourslop, int, NSC_INT, KM_INTERNAL,
- "Number of minutes update check can slip to match update_times")
-EMPCFBOTH("blitz_time", blitz_time, int, NSC_INT, 0,
- "Number of minutes between updates under policy 2.")
+ "Time window the update will occur in after the update time, in seconds")
EMPCFBOTH("pre_update_hook", pre_update_hook, char *, NSC_STRING, KM_INTERNAL,
- "Shell command run right before the update.")
-
-EMPCF_COMMENT("\n\n### Demand update policy")
-EMPCFBOTH("update_demandpolicy", update_demandpolicy, int, NSC_INT, 0,
+ "Shell command run right before the update, in the game's data directory")
+EMPCFBOTH("update_demand", update_demand, int, NSC_INT, 0,
"Demand update policy")
-EMPCF_COMMENT("# 0 - Votes tallied at update times under policy 0\n"
- "# 1 - Votes tallies right after a vote\n"
- "# 2 - Demand updates disabled")
+EMPCF_COMMENT("# 0 - No demand updates\n"
+ "# 1 - Scheduled updates are demand updates\n"
+ "# 2 - Demand updates run right after the deciding vote is cast,\n"
+ "# in addition to (non-demand) scheduled updates")
EMPCFBOTH("update_wantmin", update_wantmin, int, NSC_INT, 0,
"Number of votes required for a demand update")
-EMPCFBOTH("update_missed", update_missed, int, NSC_INT, 0,
- "A country vetoes further demand updates after missing that many votes")
EMPCFBOTH("update_demandtimes", update_demandtimes, char *, NSC_STRING, 0,
- "Time of day ranges when demand updates can occur, separated by space.")
-EMPCF_COMMENT("# Give range HOUR:MINUTE-HOUR:MINUTE, e.g. 20:00-24:00\n"
+ "Times when unscheduled demand updates can occur, separated by space")
+EMPCF_COMMENT("# Give time ranges as HOUR:MINUTE-HOUR:MINUTE, e.g. 20:00-24:00.\n"
"# Ranges CANNOT cross midnight.")
EMPCF_COMMENT("\n\n### Game hours restrictions")
"Days of week the game is up and running, separated by space")
EMPCF_COMMENT("# Give days as Su Mo Tu We Th Fr Sa.")
EMPCFBOTH("game_hours", game_hours, char *, NSC_STRING, 0,
- "Time of day ranges when the game is open, separated by space.")
-EMPCF_COMMENT("# Give range HOUR:MINUTE-HOUR:MINUTE, e.g. 20:00-24:00\n"
+ "Time of day ranges when the game is open, separated by space")
+EMPCF_COMMENT("# Give time ranges as HOUR:MINUTE-HOUR:MINUTE, e.g. 20:00-24:00.\n"
"# Ranges CANNOT cross midnight.")
EMPCF_COMMENT("\n\n### Options")
"Enable blitz mode")
EMPCF_OPT("BRIDGETOWERS", opt_BRIDGETOWERS,
"Allow bridge towers")
-EMPCF_OPT("DEMANDUPDATE", opt_DEMANDUPDATE,
- "Allow demand updates")
EMPCF_OPT("EASY_BRIDGES", opt_EASY_BRIDGES,
"Allow bridge building without bridge heads")
EMPCF_OPT("FALLOUT", opt_FALLOUT,
"Enable secondary effects caused by radiation")
-EMPCF_OPT("FUEL", opt_FUEL,
- "Make ships use fuel to move")
EMPCF_OPT("GODNEWS", opt_GODNEWS,
"Inform the world when deities give/take away")
EMPCF_OPT("GO_RENEW", opt_GO_RENEW,
"Population is limited by research")
EMPCF_OPT("SAIL", opt_SAIL,
"Enable sail command")
-EMPCF_OPT("SHOWPLANE", opt_SHOWPLANE,
- "Show planes and land units embarked on ships or land units up for trade")
EMPCF_OPT("SLOW_WAR", opt_SLOW_WAR,
"Declaring war takes time")
EMPCF_OPT("SUPER_BARS", opt_SUPER_BARS,
EMPCFBOTH("land_mob_max", land_mob_max, int, NSC_INT, 0,
"Maximum mobility for land units")
EMPCFBOTH("money_land", money_land, double, NSC_DOUBLE, 0,
- "Cost per ETU to maintain land units (percentage of unit price)")
+ "Cost per ETU to maintain land units (fraction of unit price)")
EMPCFBOTH("morale_base", morale_base, int, NSC_INT, KM_INTERNAL,
"Base level for setting morale of land units")
EMPCFBOTH("plane_mob_max", plane_mob_max, int, NSC_INT, 0,
"Maximum mobility for planes")
EMPCFBOTH("money_plane", money_plane, double, NSC_DOUBLE, 0,
- "Cost per ETU to maintain planes (percentage of plane price)")
+ "Cost per ETU to maintain planes (fraction of plane price)")
EMPCF_COMMENT("\n\n### Ships")
EMPCFBOTH("ship_mob_scale", ship_mob_scale, float, NSC_FLOAT, 0,
EMPCFBOTH("ship_mob_max", ship_mob_max, int, NSC_INT, 0,
"Maximum mobility for ships")
EMPCFBOTH("money_ship", money_ship, double, NSC_DOUBLE, 0,
- "Cost per ETU to maintain ships (percentage of ship price)")
+ "Cost per ETU to maintain ships (fraction of ship price)")
EMPCFBOTH("torpedo_damage", torpedo_damage, int, NSC_INT, 0,
"Torpedo damage (damage is X + 1dX + 1dX)")
EMPCFBOTH("collateral_dam", collateral_dam, double, NSC_DOUBLE, 0,
"Side effect damage amount done to sector")
EMPCFBOTH("assault_penalty", assault_penalty, double, NSC_DOUBLE, 0,
- "Amount of normal attacking efficiency for paratroopers and assaulting")
+ "Attack strength multiplier for paratroopers and assaulting")
EMPCFBOTH("fire_range_factor", fire_range_factor, float, NSC_FLOAT, 0,
"Scale normal firing ranges by this amount")
EMPCFBOTH("sect_mob_neg_factor", sect_mob_neg_factor, int, NSC_INT, 0,
- "Initial mobility for MOB_ACCESS (etu_per_update / sect_mob_neg_factor)")
-EMPCF_COMMENT("# Applies to sector takeover, ship build, plane or land unit build or trade")
+ "Initial mobility for MOB_ACCESS (-etu_per_update / sect_mob_neg_factor)")
+EMPCF_COMMENT("# Applies to sector takeover, ship build, plane or land unit build, and trade.")
EMPCFBOTH("mission_mob_cost", mission_mob_cost, double, NSC_DOUBLE, 0,
"Cost to put something on a mission (percentage of max mob)")
EMPCF_COMMENT("\n\n### Populace")
EMPCFBOTH("uwbrate", uwbrate, double, NSC_DOUBLE, 0,
- "Birth rate for uw's")
+ "Birth rate for uncompensated workers")
EMPCFBOTH("money_civ", money_civ, double, NSC_DOUBLE, 0,
"Money gained from taxes on a civilian in one ETU")
EMPCFBOTH("money_mil", money_mil, double, NSC_DOUBLE, 0,
EMPCFBOTH("fallout_spread", fallout_spread, double, NSC_DOUBLE, 0,
"Amount of fallout that leaks into surrounding sectors")
EMPCFBOTH("drnuke_const", drnuke_const, float, NSC_FLOAT, 0,
- "Amount of research to tech needed to build a nuke, a common value is 0.33")
+ "Research needed to build a nuke, as fraction of the tech needed")
+EMPCF_COMMENT("# A common value is 0.33.")
EMPCF_COMMENT("\n\n### Market/Trade")
EMPCFBOTH("MARK_DELAY", MARK_DELAY, int, NSC_INT, 0,
- "Number of seconds commodities stay on the market for bidding")
+ "Time commodities stay on the market for bidding (seconds)")
EMPCFBOTH("TRADE_DELAY", TRADE_DELAY, int, NSC_INT, 0,
- "Number of seconds ships, planes, and units stay on the market for bidding")
+ "Time ships, planes, lands and nukes stay on the market for bidding (seconds)")
EMPCFBOTH("buytax", buytax, double, NSC_DOUBLE, 0,
"Tax (in percentage points) charged to the buyer on market purchases")
EMPCFBOTH("tradetax", tradetax, double, NSC_DOUBLE, 0,
EMPCF_COMMENT("\n\n### Trade ships")
EMPCFBOTH("trade_1_dist", trade_1_dist, int, NSC_INT, 0,
- "Less than this distance no money for cashing in")
+ "Less than this distance gets no money for cashing in")
EMPCFBOTH("trade_2_dist", trade_2_dist, int, NSC_INT, 0,
"Less than this distance gets trade_1 money for cashing in")
EMPCFBOTH("trade_3_dist", trade_3_dist, int, NSC_INT, 0,
- "Less than this distance gets trade_2 money for cashing in (>= gets trade_3")
+ "Less than this distance gets trade_2 money for cashing in, more gets trade_3")
EMPCFBOTH("trade_1", trade_1, float, NSC_FLOAT, 0,
"Return per sector on trade_1 distance amount")
EMPCFBOTH("trade_2", trade_2, float, NSC_FLOAT, 0,
EMPCFBOTH("trade_ally_cut", trade_ally_cut, float, NSC_FLOAT, 0,
"Bonus your ally gets for you cashing in with them")
-EMPCF_COMMENT("\n\n### Misc.")
+EMPCF_COMMENT("\n\n### Miscellaneous")
EMPCFBOTH("disabled_commands", disabled_commands, char *, NSC_STRING, KM_INTERNAL,
- "Disabled commands, separated by space")
+ "Disabled commands, separated by space")
EMPCFBOTH("anno_keep_days", anno_keep_days, int, NSC_INT, KM_INTERNAL,
- "How long until announcements expire (<0 means never)")
+ "How long until announcements expire (<0 means never)")
EMPCFBOTH("news_keep_days", news_keep_days, int, NSC_INT, KM_INTERNAL,
- "How long until news expire")
-EMPCFBOTH("fuel_mult", fuel_mult, int, NSC_INT, 0,
- "Multiplier for fuel to mobility calculation")
-EMPCFBOTH("lost_items_timeout", lost_items_timeout, int, NSC_INT, KM_INTERNAL,
- "Seconds before a lost item is timed out of the database")
+ "How long until news expire")
+EMPCFBOTH("lost_keep_hours", lost_keep_hours, int, NSC_INT, KM_INTERNAL,
+ "How long until lost items expire")
/* Sentinel */
EMPCFONLYC(NULL, emp_config_dummy, NULL, NSC_NOTYPE, 0, NULL)