2 * Empire - A multi-player, client/server Internet based war game.
3 * Copyright (C) 1986-2021, Dave Pare, Jeff Bailey, Thomas Ruschak,
4 * Ken Stevens, Steve McClure, Markus Armbruster
6 * Empire 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 3 of the License, or
9 * (at your option) any later version.
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.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 * See files README, COPYING and CREDITS in the root of the source
22 * tree for related information and legal notices. It is expected
23 * that future projects/authors will amend these files as needed.
27 * empmod.c: List all commands for Empire
29 * Known contributors to this file:
32 * Thomas Ruschak, 1992
34 * Steve McClure, 1996-2000
35 * Markus Armbruster, 2004-2015
39 * Fun fact: named empmod for historical reasons --- Empire used to be
40 * broken into seven modules on the venerable PDP-11 so it could fit
48 #include "prototypes.h"
51 struct cmndstr player_coms[] = {
52 /* command form cost addr permit */
53 {"accept [as-COUNTRY]",
54 0, c_accept, C_MOD, NORM},
55 {"add <NAT> <NAME> <REP> <STATUS>",
56 0, c_add, C_MOD, GOD},
58 0, c_telegram, C_MOD, 0},
60 3, c_anti, C_MOD, NORM + MONEY + CAP},
63 {"arm <PLANE> <NUKE> <airburst?>",
64 3, c_arm, C_MOD, NORM + CAP},
65 {"army <ARMY> <UNITS>",
66 0, c_army, C_MOD, NORM},
67 {"assault <to-SECT> <from-SHIP> [<forts?> <ships?> <arty?> <planes?>]",
68 3, c_assault, C_MOD, NORM + MONEY + CAP},
69 {"attack <SECT> [<forts?> <ships?> <arty?> <planes?>]",
70 3, c_attack, C_MOD, NORM + MONEY + CAP},
71 {"bdes <SECTS> <type>",
72 0, c_bdes, C_MOD, NORM},
73 {"bestpath <SECTS> <SECTS>",
74 0, c_bestpath, 0, NORM},
75 {"bmap <SECTS|SHIP> [s|l|n|p|r|t|*|h]",
76 0, c_map, C_MOD, NORM},
77 {"board <to-SHIP> [<from-SHIP>|<from-sector>]",
78 3, c_board, C_MOD, NORM + MONEY + CAP},
79 {"bomb <bomber-PLANES> <fighter-PLANES> <pin|strat> <ap-SECT> <PATH|DESTINATION>",
80 2, c_bomb, C_MOD, NORM + MONEY + CAP},
82 0, c_break, C_MOD, SANCT},
84 1, c_budget, 0, NORM},
85 {"build <s|l|b|p|n|t> <SECTS> <type|dir> [<number> <tech> <sure?>]",
86 1, c_build, C_MOD, NORM + MONEY + CAP},
87 {"buy <COMM> <LOT#> <BID/UNIT> <DEST>",
88 1, c_buy, C_MOD, NORM + MONEY + CAP},
92 0, c_capital, C_MOD, NORM},
96 0, c_census, 0, NONVIS},
97 {"change <country|representative> <NAME>",
98 0, c_change, C_MOD, NONVIS},
99 {"coastwatch <SECTS>",
100 1, c_coastwatch, C_MOD, NORM + CAP},
101 {"collect <LOAN> <SECT>",
102 2, c_collect, C_MOD, NORM + MONEY + CAP},
103 {"commodity <SECTS>",
104 0, c_commodity, 0, NONVIS},
105 {"consider <loan> <LOAN> <acc|decl|post>",
106 1, c_consider, C_MOD, NORM + CAP},
107 {"convert <SECTS> <NUM>",
108 2, c_convert, C_MOD, NORM + MONEY + CAP},
112 0, c_cutoff, 0, NORM},
113 {"declare <all|friend|neut|hos|war> <NATS>",
114 2, c_declare, C_MOD, NORM + CAP},
115 {"deliver <COMM> <SECTS> [q|<THRESH>] [<DIR>]",
116 1, c_deliver, C_MOD, NORM},
117 {"demobilize <SECTS> <NUM> <active-reserve?>",
118 1, c_demobilize, C_MOD,
120 {"designate <SECTS> <type>",
121 1, c_designate, C_MOD, NORM},
123 0, c_disable, C_MOD, GOD},
125 2, c_disarm, C_MOD, NORM + CAP},
126 {"distribute <SECTS> <DISTSECT|.|h>",
127 1, c_distribute, C_MOD, NORM},
128 {"drop <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION> <COMM>",
129 1, c_drop, C_MOD, NORM + MONEY + CAP},
130 {"dump <SECTS> [<fields>]",
134 {"edit <l|s|p|u|n|c> <SECTS|SHIPS|PLANES|LANDS|NUKES|NATS> [<KEY> <VALUE>]...",
135 0, c_edit, C_MOD, GOD},
137 0, c_enable, C_MOD, GOD},
138 {"enlist <SECTS> <NUM>",
139 2, c_enlist, C_MOD, NORM + MONEY + CAP},
140 {"execute <INPUT FILE>",
141 0, c_execute, 0, EXEC},
142 {"explore <c|m> <SECT> <NUM> <PATH|DESTINATION>",
143 1, c_explore, C_MOD, NORM + MONEY + CAP},
145 0, c_financial, 0, 0},
146 {"fire <TYPE> <from-SECTS | SHIPS | UNITS> [TO-SECT | SHIP]",
147 1, c_fire, C_MOD, NORM + MONEY + CAP},
148 {"flash <COUNTRY> [<message>]",
150 {"fleetadd <FLEET> <SHIPS>",
151 0, c_fleetadd, C_MOD, NORM},
152 {"fly <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION> <COM>",
153 2, c_fly, C_MOD, NORM + MONEY + CAP},
155 0, c_force, C_MOD, GOD},
156 {"fortify <UNITS> <MOB>",
157 1, c_fortify, C_MOD, NORM + CAP},
158 {"give <COMM> <SECTS> <NUM>",
159 0, c_give, C_MOD, GOD},
160 {"grind <SECTS> <NUM>",
161 1, c_grind, C_MOD, NORM + MONEY + CAP},
162 {"harden <PLANES> <NUM>",
163 2, c_harden, C_MOD, NORM + MONEY + CAP},
165 0, c_headlines, 0, 0},
168 {"improve <road|rail|defense> <SECTS> <NUM>",
169 1, c_improve, C_MOD, NORM + MONEY + CAP},
174 {"launch <PLANES> <SECT|SHIP>",
175 3, c_launch, C_MOD, NORM + MONEY + CAP},
176 {"lbmap <SECTS|LAND UNIT> [s|l|n|p|r|t|*|h]",
177 0, c_map, C_MOD, NORM},
178 {"lboard <to-LAND> [<from-sector>]",
179 3, c_lboard, C_MOD, NORM + MONEY + CAP},
181 0, c_lcargo, 0, NORM},
182 {"ldump <UNITS> [<fields>]",
183 0, c_ldump, 0, NORM},
185 0, c_ledger, 0, NORM},
187 0, c_level, 0, NORM},
190 {"lload <COMM|\"land\"|\"plane\"> <UNITS> <NUM|UNITS|PLANES>",
191 1, c_lload, C_MOD, NORM + CAP},
193 1, c_llookout, 0, NORM + CAP},
194 {"lmap <SECTS|LAND UNIT> [s|l|n|p|*|h]",
195 0, c_map, C_MOD, NORM},
197 2, c_lmine, C_MOD, NORM + MONEY + CAP},
198 {"load <COMM|\"land\"|\"plane\"> <SHIPS> <NUM|UNITS|PLANES>",
199 1, c_load, C_MOD, NORM + CAP},
201 1, c_lookout, 0, NORM + CAP},
204 {"lradar <UNITS | SECTS>",
205 1, c_lradar, C_MOD, NORM + CAP},
206 {"lretreat <UNITS|ARMY> [q | <PATH> <i|h|b|c>]",
207 1, c_lretreat, C_MOD, NORM + CAP},
209 0, c_lstat, 0, NORM},
210 {"ltend <COMM> <tender-SHIPS> <NUM> <UNITS>",
211 1, c_ltend, C_MOD, NORM + CAP},
212 {"lunload <COMM|\"land\"|\"plane\"> <UNITS> <NUM|UNITS|PLANES>",
213 1, c_lload, C_MOD, NORM + CAP},
214 {"map <SECTS|SHIP> [s|l|n|p|*|h]",
215 0, c_map, C_MOD, NORM},
216 {"march <UNITS> <PATH|DESTINATION>",
217 1, c_march, C_MOD, NORM + CAP},
218 {"market <COMM|\"all\">",
219 0, c_market, C_MOD, NORM},
221 2, c_mine, C_MOD, NORM + MONEY + CAP},
222 {"mission <TYPE> <PLANES|SHIPS|UNITS> <mission type> <op sect> [<radius>]",
223 2, c_mission, C_MOD, NORM + CAP},
224 {"morale <UNITS> <retreat%>",
225 1, c_morale, C_MOD, NORM + CAP},
228 {"move <COMM> <SECT> <NUM> <PATH|DESTINATION>",
229 1, c_move, C_MOD, NORM + CAP},
230 {"name <SHIPS> <NAME>",
231 0, c_name, C_MOD, NORM},
232 {"nation [as-COUNTRY]",
234 {"navigate <SHIPS> <PATH|DESTINATION>",
235 1, c_navigate, C_MOD, NORM + CAP},
236 {"nbmap <SECTS|NUKE> [s|l|n|p|r|t|*|h]",
237 0, c_map, C_MOD, NORM},
239 0, c_ndump, 0, NORM},
240 {"newcap <NAT> <SECTOR>",
241 0, c_newcap, C_MOD, GOD},
243 0, c_neweff, 0, NORM},
245 0, c_newspaper, 0, 0},
246 {"nmap <SECTS|NUKE> [s|l|n|p|*|h]",
247 0, c_map, C_MOD, NORM},
250 {"offer <loan> <NAT> [<NUM> <DAYS> <IRATE>]",
251 1, c_offer, C_MOD, NORM + MONEY + CAP},
252 {"origin <SECT|COUNTRY|~>",
253 1, c_origin, C_MOD, NORM},
254 {"paradrop <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>",
255 3, c_paradrop, C_MOD, NORM + MONEY + CAP},
257 0, c_path, C_MOD, NORM},
259 0, c_payoff, 0, NORM},
260 {"pbmap <SECTS|PLANE> [s|l|n|p|r|t|*|h]",
261 0, c_map, C_MOD, NORM},
263 3, c_pboard, C_MOD, NORM + MONEY + CAP},
264 {"pdump <PLANES> [<fields>]",
265 0, c_pdump, 0, NORM},
269 0, c_plane, 0, NORM},
272 {"pmap <SECTS|PLANE> [s|l|n|p|*|h]",
273 0, c_map, C_MOD, NORM},
274 {"power [\"new\"|\"update\"] [<NUMBER OF COUNTRIES> | \"country\" <NATS>]",
275 0, c_power, C_MOD, 0},
277 0, c_telegram, C_MOD, NORM},
278 {"production <SECTS>",
279 0, c_production, 0, NORM},
281 0, c_pstat, 0, NORM},
284 {"radar <SHIPS | SECTS>",
285 1, c_radar, C_MOD, NORM + CAP},
286 {"range <PLANES> <range>",
287 1, c_range, C_MOD, NORM + CAP},
288 {"read [yes|no|<CNUM/CNAME>]",
289 0, c_read, C_MOD, NONVIS},
290 {"realm <number> [<SECTS>]",
291 0, c_realm, C_MOD, NORM},
292 {"recon <spy-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>",
293 3, c_recon, C_MOD, NORM + MONEY + CAP},
294 {"reject <reject|accept> <announcements|mail|loans> <NAT>",
295 2, c_reject, C_MOD, NORM},
296 {"relations [as-COUNTRY]",
297 0, c_relations, 0, 0},
299 0, c_reload, C_MOD, GOD},
300 {"repay <LOAN> <NUM>",
301 1, c_repay, C_MOD, NORM + MONEY + CAP},
304 {"reset <lot #> <0|price>",
305 1, c_reset, C_MOD, NORM + CAP},
307 0, c_resource, 0, NONVIS},
308 {"retreat <SHIPS|FLEET> [q | <PATH> <i|t|s|h|b|d|u|c>]",
309 1, c_retreat, C_MOD, NORM + CAP},
310 {"route <COMM> <SECTS>",
311 1, c_route, C_MOD, NORM},
313 1, c_sabotage, C_MOD, NORM + MONEY + CAP},
314 {"satellite <PLANE> [<se|sh|l> [?cond&cond&...]]",
315 1, c_satellite, C_MOD, NORM + CAP},
316 {"sbmap <SECTS|SHIP> [s|l|n|p|r|t|*|h]",
317 0, c_map, C_MOD, NORM},
318 {"scrap <s|p|l> <SHIPS|PLANES|UNITS>",
319 2, c_scrap, C_MOD, NORM + MONEY + CAP},
320 {"scuttle <s|p|l> <SHIPS|PLANES|UNITS>",
321 5, c_scuttle, C_MOD, NORM + CAP},
322 {"sdump <SHIPS> [<fields>]",
323 0, c_sdump, 0, NORM},
325 0, c_sect, C_MOD, NORM},
326 {"sell <COMM> <SECTS> <NUM> <NUM>",
327 1, c_sell, C_MOD, NORM + CAP},
328 {"set <TYPE> <SHIPS|PLANES|UNITS|NUKES> <PRICE>",
329 1, c_set, C_MOD, NORM + CAP},
330 {"setresource <type> <SECTS> <NUM>",
331 0, c_setresource, C_MOD, GOD},
332 {"setsector <type> <SECTS> <NUM>",
333 0, c_setsector, C_MOD, GOD},
334 {"sharebmap <CNUM/CNAME> <SECTS> [<des>]",
335 0, c_sharebmap, C_MOD, NORM},
337 25, c_shark, C_MOD, NORM + MONEY + CAP},
340 {"shoot <c|u> <SECTS> <NUMBER>",
341 3, c_shoot, C_MOD, NORM + MONEY + CAP},
342 {"show <TYPE> <\"build\"|\"stats\"|\"cap\"> [<tech>]\n"
343 "\tshow <bridge|item|news|product|tower>\n"
344 "\tshow updates [<NUM>]>",
346 {"shutdown <minutes> <disable update?>",
347 0, c_shutdown, 0, GOD},
348 {"sinfrastructure <SECTS>",
349 0, c_sinfrastructure, 0, NONVIS},
351 1, c_skywatch, C_MOD, NORM + CAP},
352 {"smap <SECTS|SHIP> [s|l|n|p|*|h]",
353 0, c_map, C_MOD, NORM},
354 {"sonar <SHIPS> <brief?>",
355 1, c_sonar, C_MOD, NORM + CAP},
357 1, c_spy, C_MOD, NORM + CAP},
359 0, c_sstat, 0, NORM},
360 {"start <TYPE> <SECTS|PLANES|SHIPS|UNITS|NUKES>",
361 1, c_start, C_MOD, NORM},
362 {"starvation [<SECTS>|l <UNITS>|s <SHIPS>]",
363 0, c_starvation, 0, NORM},
364 {"stockpile <STOCKPILE> <NUKES>",
365 0, c_stockpile, C_MOD, NORM},
366 {"stop <TYPE> <SECTS|PLANES|SHIPS|UNITS|NUKES>",
367 1, c_stop, C_MOD, NORM},
369 1, c_strength, C_MOD, NORM},
370 {"supply <LAND UNITS>",
371 1, c_supply, C_MOD, NORM + CAP},
372 {"survey <SELECTOR> <SECTS>",
373 0, c_survey, C_MOD, NORM},
374 {"swapsector <SECT> <SECT>",
375 0, c_swapsector, C_MOD, GOD},
376 {"sweep <sweep-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>",
377 3, c_recon, C_MOD, NORM + MONEY + CAP},
378 {"telegram <NATS>...",
379 0, c_telegram, C_MOD, NORM},
380 {"tend <COMM|\"land\"> <tender-SHIPS> <NUM|UNIT> <dest-SHIPS>",
381 1, c_tend, C_MOD, NORM + CAP},
382 {"territory <SECTS> <NUMBER> [<FIELD>]",
383 0, c_territory, C_MOD, NORM},
384 {"test <COMM> <SECT> <NUM> <PATH|DESTINATION>",
385 1, c_move, C_MOD, NORM},
386 {"threshold <COMM> <SECTS> <THRESH>",
387 1, c_threshold, C_MOD, NORM},
388 {"toggle [inform|flash|beep|coastwatch|sonar|techlists] [on|off]",
389 0, c_toggle, C_MOD, 0},
390 {"torpedo <submarine-SHIPS> <target-SHIP>",
391 3, c_torpedo, C_MOD, NORM + MONEY + CAP},
393 1, c_trade, C_MOD, NORM + MONEY + CAP},
394 {"transport <\"nuke\"|\"plane\"> <NUKES|PLANES> <PATH|DESTINATION>",
395 1, c_transport, C_MOD, NORM + CAP},
396 {"turn <\"on\"|\"off\"|\"mess\">",
397 0, c_turn, C_MOD, GOD},
398 {"unload <COMM|\"land\"|\"plane\"> <SHIPS> <NUM|UNIT|PLANE>",
399 1, c_load, C_MOD, NORM + CAP},
402 {"upgrade <s|p|l> <SHIPS|PLANES|UNITS>",
403 1, c_upgrade, C_MOD, NORM + MONEY + CAP},
408 {"wingadd <WING> <PLANES>",
409 0, c_wingadd, C_MOD, NORM},
411 1, c_wipe, C_MOD, NORM},
412 {"wire [yes|no|<days>]",
413 0, c_read, C_MOD, 0},
414 {"work <LAND UNITS> <AMOUNT>",
415 1, c_work, C_MOD, NORM + MONEY + CAP},
416 {"xdump [\"meta\"] <TYPE> [<RECORDS>]",
419 0, c_zdone, C_MOD, NORM},
420 {"__cmd \"added\" <NUM> <NUM> <NUM>",
421 0, c___cmd, 0, TESTING},
422 {NULL, 0, NULL, 0, 0}