]> git.pond.sub.org Git - empserver/blob - include/econfig-spec.h
Update copyright notice.
[empserver] / include / econfig-spec.h
1 /*
2  *  Empire - A multi-player, client/server Internet based war game.
3  *  Copyright (C) 1986-2007, 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 files README, COPYING and CREDITS in the root of the source
23  *  tree for related information and legal notices.  It is expected
24  *  that future projects/authors will amend these files as needed.
25  *
26  *  ---
27  *
28  *  econfig-spec.h: Combined include for optlist.h and emp_config.c
29  * 
30  *  Known contributors to this file:
31  *     Marc Olzheim, 2004
32  *     Markus Armbruster, 2004-2006
33  */
34
35 /*
36  * This file declares econfig keys.  It expand into the corresponding
37  * variable declarations if defined(EMP_CONFIG_H_OUTPUT), and into
38  * struct keymatch[] initializers if defined(EMP_CONFIG_C_OUTPUT).
39  *
40  * EMPCFBOTH() defines econfig keys.  EMPCF_OPT() is a convenience
41  * wrapper for options.  EMPCF_COMMENT() defines comments.
42  */
43
44 /*
45  * Preprocessor of MSC C++ 6.0 (VC98) is broken and chokes on empty
46  * macro arguments.  Fixed in MSC C++ 7.0.  Work around: pass
47  * useless token `unused'.
48  */
49
50 #if     defined(EMP_CONFIG_C_OUTPUT)
51
52 #define EMPCFONLYC(fvname, vname, vtype, ctype, num, descr)     \
53         { (fvname), (ctype), &(vname), (num), (descr) },
54 #define EMPCFBOTH(fvname, vname, vtype, ctype, num, descr)      \
55         { (fvname), (ctype), &(vname), (num), (descr) },
56
57 #elif   defined(EMP_CONFIG_H_OUTPUT)
58
59 #define EMPCFONLYC(fvname, vname, vtype, ctype, num, descr)
60 #define EMPCFBOTH(fvname, vname, vtype, ctype, num, descr)      \
61         extern vtype vname;
62
63 #endif  /* EMP_CONFIG_C_OUTPUT || EMP_CONFIG_H_OUTPUT */
64
65 #define EMPCF_COMMENT(comment) \
66 EMPCFONLYC("", emp_config_dummy, unused , NSC_NOTYPE, 0, (comment))
67
68 #define EMPCF_OPT(fvname, vname, descr) \
69 EMPCFBOTH((fvname), (vname), int, NSC_INT, KM_OPTION, (descr))
70
71 /* econfig key definitions: */
72
73 EMPCF_COMMENT("\n### Server configuration and information")
74 EMPCFBOTH("custom_tables", custom_tables, char *, NSC_STRING, KM_INTERNAL,
75     "Custom configuration table files, separated by space")
76 EMPCFBOTH("data", gamedir, char *, NSC_STRING, KM_INTERNAL,
77     "Directory where this game's data is stored")
78 EMPCFBOTH("info", infodir, char *, NSC_STRING, KM_INTERNAL,
79     "Directory where info pages are stored, can be shared among games")
80 EMPCF_COMMENT("# Note: Use an absolute name here, the interpretation of a relative\n"
81               "# name may change.")
82 EMPCFBOTH("builtin", builtindir, char *, NSC_STRING, KM_INTERNAL,
83     "Directory where builtin files are stored")
84 EMPCF_COMMENT("# Set this to your source tree's src/lib/global to run the server\n"
85               "# without installing it, else leave it alone.")
86 EMPCFBOTH("listen_addr", listen_addr, char *, NSC_STRING, KM_INTERNAL,
87     "Local IP address the server should listen on.")
88 EMPCF_COMMENT("# \"\" listens on all, localhost just on the loopback interface")
89 EMPCFBOTH("port", loginport, char *, NSC_STRING, KM_INTERNAL,
90     "TCP port the server will bind")
91 EMPCFBOTH("keep_journal", keep_journal, int, NSC_INT, KM_INTERNAL,
92     "Enable journal log file")
93 EMPCFBOTH("privname", privname, char *, NSC_STRING, 0,
94     "Name of the deity")
95 EMPCFBOTH("privlog", privlog, char *, NSC_STRING, 0,
96     "E-mail of the deity")
97 EMPCFBOTH("privip", privip, char *, NSC_STRING, KM_INTERNAL,
98     "Deities may connect from these IPs or networks, \"\" allows all")
99 EMPCFBOTH("WORLD_X", WORLD_X, int, NSC_INT, 0,
100     "World size X dimension (enforced to be even by subtracting 1 if necessary)")
101 EMPCFBOTH("WORLD_Y", WORLD_Y, int, NSC_INT, 0,
102     "World size Y dimension")
103
104 EMPCF_COMMENT("\n\n### Update policy")
105 EMPCFBOTH("update_policy", update_policy, int, NSC_INT, 0,
106     "Update policy")
107 EMPCF_COMMENT("# 0 - Schedule updates according to etu_per_update, s_p_etu, adj_update\n"
108               "# 1 - Update at times specified by key \"update_times\"\n"
109               "# 2 - Blitz update every blitz_time minute\n"
110               "# 3 - No regular updates, only demand ones")
111 EMPCFBOTH("etu_per_update", etu_per_update, int, NSC_INT, 0,
112     "Number of ETUs per update")
113 EMPCFBOTH("s_p_etu", s_p_etu, int, NSC_INT, 0,
114     "Seconds per ETU")
115 EMPCF_COMMENT("# updates under policy 0 occur every s_p_etu * etu_per_update seconds")
116 EMPCFBOTH("adj_update", adj_update, int, NSC_INT, KM_INTERNAL,
117     "Move the update forward or backward (in seconds)")
118 EMPCFBOTH("update_window", update_window, int, NSC_INT, 0,
119     "Window the update will occur in (in seconds) before and after the update time")
120 EMPCFBOTH("update_times", update_times, char *, NSC_STRING, 0,
121     "Times of day when updates may occur under policy 1, separated by space.")
122 EMPCF_COMMENT("# Give time of day as HOUR:MINUTE, e.g. 20:00\n"
123     "# Times must coincide with updates under policy 0.")
124 EMPCFBOTH("hourslop", hourslop, int, NSC_INT, KM_INTERNAL,
125     "Number of minutes update check can slip to match update_times")
126 EMPCFBOTH("blitz_time", blitz_time, int, NSC_INT, 0,
127     "Number of minutes between updates under policy 2.")
128 EMPCFBOTH("pre_update_hook", pre_update_hook, char *, NSC_STRING, KM_INTERNAL,
129     "Shell command run right before the update.")
130
131 EMPCF_COMMENT("\n\n### Demand update policy")
132 EMPCFBOTH("update_demandpolicy", update_demandpolicy, int, NSC_INT, 0,
133     "Demand update policy")
134 EMPCF_COMMENT("# 0 - Votes tallied at update times under policy 0\n"
135               "# 1 - Votes tallies right after a vote\n"
136               "# 2 - Demand updates disabled")
137 EMPCFBOTH("update_wantmin", update_wantmin, int, NSC_INT, 0,
138     "Number of votes required for a demand update")
139 EMPCFBOTH("update_missed", update_missed, int, NSC_INT, 0,
140     "A country vetoes further demand updates after missing that many votes")
141 EMPCFBOTH("update_demandtimes", update_demandtimes, char *, NSC_STRING, 0,
142     "Time of day ranges when demand updates can occur, separated by space.")
143 EMPCF_COMMENT("# Give range HOUR:MINUTE-HOUR:MINUTE, e.g. 20:00-24:00\n"
144               "# Ranges CANNOT cross midnight.")
145
146 EMPCF_COMMENT("\n\n### Game hours restrictions")
147 EMPCFBOTH("game_days", game_days, char *, NSC_STRING, 0,
148     "Days of week the game is up and running, separated by space")
149 EMPCF_COMMENT("# Give days as Su Mo Tu We Th Fr Sa.")
150 EMPCFBOTH("game_hours", game_hours, char *, NSC_STRING, 0,
151     "Time of day ranges when the game is open, separated by space.")
152 EMPCF_COMMENT("# Give range HOUR:MINUTE-HOUR:MINUTE, e.g. 20:00-24:00\n"
153               "# Ranges CANNOT cross midnight.")
154
155 EMPCF_COMMENT("\n\n### Options")
156 EMPCF_OPT("ALL_BLEED", opt_ALL_BLEED,
157     "Let tech bleed to everyone, not just allies")
158 EMPCF_OPT("AUTO_POWER", opt_AUTO_POWER,
159     "Power report is updated only automatically, at the update")
160 EMPCF_OPT("BLITZ", opt_BLITZ,
161     "Enable blitz mode")
162 EMPCF_OPT("BRIDGETOWERS", opt_BRIDGETOWERS,
163     "Allow bridge towers")
164 EMPCF_OPT("DEMANDUPDATE", opt_DEMANDUPDATE,
165     "Allow demand updates")
166 EMPCF_OPT("EASY_BRIDGES", opt_EASY_BRIDGES,
167     "Allow bridge building without bridge heads")
168 EMPCF_OPT("FALLOUT", opt_FALLOUT,
169     "Enable secondary effects caused by radiation")
170 EMPCF_OPT("FUEL", opt_FUEL,
171     "Make ships use fuel to move")
172 EMPCF_OPT("GODNEWS", opt_GODNEWS,
173     "Inform the world when deities give/take away")
174 EMPCF_OPT("GO_RENEW", opt_GO_RENEW,
175     "Make gold and oil renewable resources")
176 EMPCF_OPT("GUINEA_PIGS", opt_GUINEA_PIGS,
177     "Enable experimental stuff not ready for prime time")
178 EMPCF_OPT("HIDDEN", opt_HIDDEN,
179     "Hide information between players")
180 EMPCF_OPT("INTERDICT_ATT", opt_INTERDICT_ATT,
181     "Interdict post-attack move in")
182 EMPCF_OPT("LANDSPIES", opt_LANDSPIES,
183     "Enable the land unit type spies")
184 EMPCF_OPT("LOANS", opt_LOANS,
185     "Allow bailing out of other countries via S&L scandals")
186 EMPCF_OPT("LOSE_CONTACT", opt_LOSE_CONTACT,
187     "Let contact be lost after a few updates")
188 EMPCF_OPT("MARKET", opt_MARKET,
189     "Enable time-based market and trading")
190 EMPCF_OPT("MOB_ACCESS", opt_MOB_ACCESS,
191     "Update mobility in real-time rather than at the update")
192 EMPCF_OPT("NOFOOD", opt_NOFOOD,
193     "Disable food consumption")
194 EMPCF_OPT("NOMOBCOST", opt_NOMOBCOST,
195     "Don't charge mobility for firing from ships")
196 EMPCF_OPT("NO_FORT_FIRE", opt_NO_FORT_FIRE,
197     "Disable fortress fire")
198 EMPCF_OPT("NO_PLAGUE", opt_NO_PLAGUE,
199     "Disable plague")
200 EMPCF_OPT("PINPOINTMISSILE", opt_PINPOINTMISSILE,
201     "Enable marine missiles")
202 EMPCF_OPT("RES_POP", opt_RES_POP,
203     "Population is limited by research")
204 EMPCF_OPT("SAIL", opt_SAIL,
205     "Enable sail command")
206 EMPCF_OPT("SHOWPLANE", opt_SHOWPLANE,
207     "Show planes and land units embarked on ships or land units up for trade")
208 EMPCF_OPT("SLOW_WAR", opt_SLOW_WAR,
209     "Declaring war takes time")
210 EMPCF_OPT("SUPER_BARS", opt_SUPER_BARS,
211     "Make bars immune to damage")
212 EMPCF_OPT("TECH_POP", opt_TECH_POP,
213     "Technology costs more as population rises")
214 EMPCF_OPT("TRADESHIPS", opt_TRADESHIPS,
215     "Enable Tradeships")
216 EMPCF_OPT("TREATIES", opt_TREATIES,
217     "Allow treaties")
218
219 EMPCF_COMMENT("\n\n### Countries")
220 EMPCFBOTH("btu_build_rate", btu_build_rate, float, NSC_FLOAT, 0,
221     "Rate at which BTUs accumulate (etu * civ * eff * btu_build_rate)")
222 EMPCFBOTH("m_m_p_d", m_m_p_d, int, NSC_INT, 0,
223     "Maximum minutes per day a country is allowed to be logged in")
224 EMPCFBOTH("max_btus", max_btus, int, NSC_INT, 0,
225     "Maximum number of BTUs a country can have")
226 EMPCFBOTH("max_idle", max_idle, int, NSC_INT, 0,
227     "Maximum number of minutes a player can sit idle while logged in")
228 EMPCFBOTH("players_at_00", players_at_00, int, NSC_INT, 0,
229     "Players have their coordinate system at deity 0,0 (0 - no, 1 - yes)")
230 EMPCFBOTH("at_least_one_100", at_least_one_100, int, NSC_INT, KM_INTERNAL,
231     "Initialize new countries with at least one sector with 100 of all resource")
232 EMPCFBOTH("start_cash", start_cash, long, NSC_LONG, KM_INTERNAL,
233     "Starting cash for new countries")
234 EMPCFBOTH("war_cost", War_Cost, int, NSC_INT, 0,
235     "Cost to declare war (if SLOW_WAR is on)")
236
237 EMPCF_COMMENT("\n\n### Technology/Research/Education/Happiness")
238 EMPCFBOTH("easy_tech", easy_tech, float, NSC_FLOAT, 0,
239     "Amount of tech built with no penalty")
240 EMPCFBOTH("start_tech", start_technology, float, NSC_FLOAT, KM_INTERNAL,
241     "Starting technology for new countries")
242 EMPCFBOTH("start_happy", start_happiness, float, NSC_FLOAT, KM_INTERNAL,
243     "Starting happiness for new countries")
244 EMPCFBOTH("start_research", start_research, float, NSC_FLOAT, KM_INTERNAL,
245     "Starting research for new countries")
246 EMPCFBOTH("start_edu", start_education, float, NSC_FLOAT, KM_INTERNAL,
247     "Starting education for new countries")
248 EMPCFBOTH("level_age_rate", level_age_rate, float, NSC_FLOAT, 0,
249     "ETU rate at which tech decays (0 -> no decline)")
250 EMPCFBOTH("tech_log_base", tech_log_base, float, NSC_FLOAT, 0,
251     "Log base to apply to tech breakthroughs above the easy tech level")
252 EMPCFBOTH("ally_factor", ally_factor, float, NSC_FLOAT, 0,
253     "Shared tech with allies (1 / ally_factor)")
254 EMPCFBOTH("edu_avg", edu_avg, float, NSC_FLOAT, 0,
255     "Number of ETUs education is averaged over")
256 EMPCFBOTH("hap_avg", hap_avg, float, NSC_FLOAT, 0,
257     "Number of ETUs happiness is averaged over")
258 EMPCFBOTH("edu_cons", edu_cons, double, NSC_DOUBLE, 0,
259     "Education consumption (1 breakthrough per edu_cons)")
260 EMPCFBOTH("hap_cons", hap_cons, double, NSC_DOUBLE, 0,
261     "Happiness consumption (1 breakthrough per hap_cons)")
262
263 EMPCF_COMMENT("\n\n### Sectors")
264 EMPCFBOTH("startmob", startmob, int, NSC_INT, KM_INTERNAL,
265     "Starting mobility for sanctuaries")
266 EMPCFBOTH("sect_mob_scale", sect_mob_scale, float, NSC_FLOAT, 0,
267     "Sector mobility accumulation per ETU")
268 EMPCFBOTH("sect_mob_max", sect_mob_max, int, NSC_INT, 0,
269     "Maximum mobility for sectors")
270 EMPCFBOTH("buil_bh", buil_bh, int, NSC_INT, 0,
271     "Number of hcms required to build a bridge span")
272 EMPCFBOTH("buil_bc", buil_bc, double, NSC_DOUBLE, 0,
273     "Cash required to build a bridge span")
274 EMPCFBOTH("buil_bt", buil_bt, double, NSC_DOUBLE, 0,
275     "Technology required to build a bridge span")
276 EMPCFBOTH("buil_tower_bh", buil_tower_bh, int, NSC_INT, 0,
277     "Number of hcms required to build a bridge tower")
278 EMPCFBOTH("buil_tower_bc", buil_tower_bc, double, NSC_DOUBLE, 0,
279     "Cash required to build a bridge tower")
280 EMPCFBOTH("buil_tower_bt", buil_tower_bt, double, NSC_DOUBLE, 0,
281     "Technology required to build a bridge tower")
282
283 EMPCF_COMMENT("\n\n### Land Units")
284 EMPCFBOTH("land_mob_scale", land_mob_scale, float, NSC_FLOAT, 0,
285     "Land unit mobility accumulation per ETU")
286 EMPCFBOTH("land_grow_scale", land_grow_scale, float, NSC_FLOAT, 0,
287     "How fast efficiency grows for land units, per ETU")
288 EMPCFBOTH("land_mob_max", land_mob_max, int, NSC_INT, 0,
289     "Maximum mobility for land units")
290 EMPCFBOTH("money_land", money_land, double, NSC_DOUBLE, 0,
291     "Cost per ETU to maintain land units (percentage of unit price)")
292 EMPCFBOTH("morale_base", morale_base, int, NSC_INT, KM_INTERNAL,
293     "Base level for setting morale of land units")
294
295 EMPCF_COMMENT("\n\n### Planes")
296 EMPCFBOTH("plane_mob_scale", plane_mob_scale, float, NSC_FLOAT, 0,
297     "Plane mobility accumulation per ETU")
298 EMPCFBOTH("plane_grow_scale", plane_grow_scale, float, NSC_FLOAT, 0,
299     "How fast efficiency grows for planes each update, per ETU")
300 EMPCFBOTH("plane_mob_max", plane_mob_max, int, NSC_INT, 0,
301     "Maximum mobility for planes")
302 EMPCFBOTH("money_plane", money_plane, double, NSC_DOUBLE, 0,
303     "Cost per ETU to maintain planes (percentage of plane price)")
304
305 EMPCF_COMMENT("\n\n### Ships")
306 EMPCFBOTH("ship_mob_scale", ship_mob_scale, float, NSC_FLOAT, 0,
307     "Ship mobility accumulation per ETU")
308 EMPCFBOTH("ship_grow_scale", ship_grow_scale, float, NSC_FLOAT, 0,
309     "How fast efficiency grows for ships each update, per ETU")
310 EMPCFBOTH("ship_mob_max", ship_mob_max, int, NSC_INT, 0,
311     "Maximum mobility for ships")
312 EMPCFBOTH("money_ship", money_ship, double, NSC_DOUBLE, 0,
313     "Cost per ETU to maintain ships (percentage of ship price)")
314 EMPCFBOTH("torpedo_damage", torpedo_damage, int, NSC_INT, 0,
315     "Torpedo damage (damage is X + 1dX + 1dX)")
316
317 EMPCF_COMMENT("\n\n### Combat/Damage")
318 EMPCFBOTH("fort_max_interdiction_range", fort_max_interdiction_range, int, NSC_INT, 0,
319     "Maximum range (in sectors) a fort will try to interdict another country")
320 EMPCFBOTH("land_max_interdiction_range", land_max_interdiction_range, int, NSC_INT, 0,
321     "Maximum range (in sectors) a land unit will try to interdict another country")
322 EMPCFBOTH("ship_max_interdiction_range", ship_max_interdiction_range, int, NSC_INT, 0,
323     "Maximum range (in sectors) a ship will try to interdict another country")
324 EMPCFBOTH("flakscale", flakscale, float, NSC_FLOAT, 0,
325     "Scale factor for flak damage")
326 EMPCFBOTH("combat_mob", combat_mob, double, NSC_DOUBLE, 0,
327     "How much mobility do units spend for combat (* casualties/bodies)")
328 EMPCFBOTH("people_damage", people_damage, double, NSC_DOUBLE, 0,
329     "People take this amount of normal damage")
330 EMPCFBOTH("unit_damage", unit_damage, double, NSC_DOUBLE, 0,
331     "Land units take this amount of normal damage")
332 EMPCFBOTH("collateral_dam", collateral_dam, double, NSC_DOUBLE, 0,
333     "Side effect damage amount done to sector")
334 EMPCFBOTH("assault_penalty", assault_penalty, double, NSC_DOUBLE, 0,
335     "Amount of normal attacking efficiency for paratroopers and assaulting")
336 EMPCFBOTH("fire_range_factor", fire_range_factor, float, NSC_FLOAT, 0,
337     "Scale normal firing ranges by this amount")
338 EMPCFBOTH("sect_mob_neg_factor", sect_mob_neg_factor, int, NSC_INT, 0,
339     "Initial mobility for MOB_ACCESS (etu_per_update / sect_mob_neg_factor)")
340 EMPCF_COMMENT("# Applies to sector takeover, ship build, plane or land unit build or trade")
341 EMPCFBOTH("mission_mob_cost", mission_mob_cost, double, NSC_DOUBLE, 0,
342     "Cost to put something on a mission (percentage of max mob)")
343
344 EMPCF_COMMENT("\n\n### Populace")
345 EMPCFBOTH("uwbrate", uwbrate, double, NSC_DOUBLE, 0,
346     "Birth rate for uw's")
347 EMPCFBOTH("money_civ", money_civ, double, NSC_DOUBLE, 0,
348     "Money gained from taxes on a civilian in one ETU")
349 EMPCFBOTH("money_mil", money_mil, double, NSC_DOUBLE, 0,
350     "Money gained from taxes on an active soldier in one ETU")
351 EMPCFBOTH("money_res", money_res, double, NSC_DOUBLE, 0,
352     "Money gained from taxes on a soldier on active reserve in one ETU")
353 EMPCFBOTH("money_uw", money_uw, double, NSC_DOUBLE, 0,
354     "Money gained from taxes on an uncompensated worker in one ETU")
355 EMPCFBOTH("babyeat", babyeat, double, NSC_DOUBLE, 0,
356     "Amount of food to mature 1 baby into a civilian")
357 EMPCFBOTH("bankint", bankint, double, NSC_DOUBLE, 0,
358     "Bank dollar gain (per bar per etu)")
359 EMPCFBOTH("eatrate", eatrate, double, NSC_DOUBLE, 0,
360     "Food eating rate for mature people")
361 EMPCFBOTH("fcrate", fcrate, double, NSC_DOUBLE, 0,
362     "Food cultivation rate (* workforce in sector)")
363 EMPCFBOTH("fgrate", fgrate, double, NSC_DOUBLE, 0,
364     "Food growth rate (* fertility of sector)")
365 EMPCFBOTH("obrate", obrate, double, NSC_DOUBLE, 0,
366     "Civilian birth rate")
367 EMPCFBOTH("rollover_avail_max", rollover_avail_max, int, NSC_INT, 0,
368     "Maximum avail that can roll over an update")
369
370 EMPCF_COMMENT("\n\n### Nukes")
371 EMPCFBOTH("decay_per_etu", decay_per_etu, double, NSC_DOUBLE, 0,
372     "Decay of fallout per ETU")
373 EMPCFBOTH("fallout_spread", fallout_spread, double, NSC_DOUBLE, 0,
374     "Amount of fallout that leaks into surrounding sectors")
375 EMPCFBOTH("drnuke_const", drnuke_const, float, NSC_FLOAT, 0,
376     "Amount of research to tech needed to build a nuke, a common value is 0.33")
377
378 EMPCF_COMMENT("\n\n### Market/Trade")
379 EMPCFBOTH("MARK_DELAY", MARK_DELAY, int, NSC_INT, 0,
380     "Number of seconds commodities stay on the market for bidding")
381 EMPCFBOTH("TRADE_DELAY", TRADE_DELAY, int, NSC_INT, 0,
382     "Number of seconds ships, planes, and units stay on the market for bidding")
383 EMPCFBOTH("buytax", buytax, double, NSC_DOUBLE, 0,
384     "Tax (in percentage points) charged to the buyer on market purchases")
385 EMPCFBOTH("tradetax", tradetax, double, NSC_DOUBLE, 0,
386     "Amount of a trade transaction the seller makes (the rest is tax)")
387
388 EMPCF_COMMENT("\n\n### Trade ships")
389 EMPCFBOTH("trade_1_dist", trade_1_dist, int, NSC_INT, 0,
390     "Less than this distance no money for cashing in")
391 EMPCFBOTH("trade_2_dist", trade_2_dist, int, NSC_INT, 0,
392     "Less than this distance gets trade_1 money for cashing in")
393 EMPCFBOTH("trade_3_dist", trade_3_dist, int, NSC_INT, 0,
394     "Less than this distance gets trade_2 money for cashing in (>= gets trade_3")
395 EMPCFBOTH("trade_1", trade_1, float, NSC_FLOAT, 0,
396     "Return per sector on trade_1 distance amount")
397 EMPCFBOTH("trade_2", trade_2, float, NSC_FLOAT, 0,
398     "Return per sector on trade_2 distance amount")
399 EMPCFBOTH("trade_3", trade_3, float, NSC_FLOAT, 0,
400     "Return per sector on trade_3 distance amount")
401 EMPCFBOTH("trade_ally_bonus", trade_ally_bonus, float, NSC_FLOAT, 0,
402     "Bonus you get for cashing in with an ally")
403 EMPCFBOTH("trade_ally_cut", trade_ally_cut, float, NSC_FLOAT, 0,
404     "Bonus your ally gets for you cashing in with them")
405
406 EMPCF_COMMENT("\n\n### Misc.")
407 EMPCFBOTH("disabled_commands", disabled_commands, char *, NSC_STRING, KM_INTERNAL,
408           "Disabled commands, separated by space")
409 EMPCFBOTH("anno_keep_days", anno_keep_days, int, NSC_INT, KM_INTERNAL,
410           "How long until announcements expire (<0 means never)")
411 EMPCFBOTH("news_keep_days", news_keep_days, int, NSC_INT, KM_INTERNAL,
412           "How long until news expire")
413 EMPCFBOTH("fuel_mult", fuel_mult, int, NSC_INT, 0,
414     "Multiplier for fuel to mobility calculation")
415 EMPCFBOTH("lost_items_timeout", lost_items_timeout, int, NSC_INT, KM_INTERNAL,
416     "Seconds before a lost item is timed out of the database")
417
418 /* Sentinel */
419 EMPCFONLYC(NULL, emp_config_dummy, NULL, NSC_NOTYPE, 0, NULL)
420
421 #undef EMPCFONLYC
422 #undef EMPCFBOTH
423 #undef EMPCF_COMMENT