]> git.pond.sub.org Git - empserver/blob - src/lib/player/empmod.c
Cosmetics.
[empserver] / src / lib / player / empmod.c
1 /*
2  *  Empire - A multi-player, client/server Internet based war game.
3  *  Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
4  *                           Ken Stevens, Steve McClure
5  *
6  *  This program is free software; you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation; either version 2 of the License, or
9  *  (at your option) any later version.
10  *
11  *  This program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with this program; if not, write to the Free Software
18  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  *  ---
21  *
22  *  See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the
23  *  related information and legal notices. It is expected that any future
24  *  projects/authors will amend these files as needed.
25  *
26  *  ---
27  *
28  *  empmod.c: List all commands for Empire
29  * 
30  *  Known contributors to this file:
31  *     Dave Pare, 1986
32  *     Jeff Bailey
33  *     Thomas Ruschak, 1992
34  *     Ken Stevens, 1995
35  *     Steve McClure, 1996-2000
36  */
37
38 #include "misc.h"
39 #include "com.h"
40 #include "nat.h"
41 #include "file.h"
42
43 extern int add();
44 extern int anti();
45 extern int assa();
46 extern int atta();
47 extern int boar();
48 extern int bdes();
49 extern int bomb();
50 extern int buil();
51 extern int chan();
52 extern int coas();
53 extern int comm();
54 extern int coun();
55 extern int decl();
56 extern int deli();
57 extern int show();
58 extern int show_motd(void);
59 extern int desi();
60 extern int diss();
61 extern int drop();
62 extern int echo(void);
63 extern int enli();
64 extern int fire();
65 extern int flee();
66 extern int fly();
67 extern int force();
68 extern int info();
69 extern int apro();
70 extern int load();
71 extern int look();
72 extern int map();
73 extern int mine();
74 extern int move();
75 extern int nati();
76 extern int navi();
77 extern int head(), news();
78 extern int nuke();
79 extern int offs();
80 extern int para();
81 extern int path();
82 extern int payo();
83 extern int powe();
84 extern int rada();
85 extern int rea();
86 extern int real();
87 extern int reco();
88 extern int rout();
89 extern int sona();
90 extern int spy();
91 extern int tele();
92 extern int tend();
93 extern int torp();
94 extern int tran();
95 extern int trea();
96 extern int turn();
97 extern int vers();
98 /*
99  * new commands
100  */
101 extern int repo();
102 extern int laun();
103 extern int new();
104 extern int shoo();
105 extern int thre();
106 extern int dist();
107 extern int sct();
108 extern int plan();
109 extern int arm();
110 extern int hard();
111 extern int upgr();
112 extern int surv();
113 extern int capi();
114 extern int orig();
115 extern int conv();
116 extern int leve();
117 extern int cuto();
118 extern int prod();
119 extern int wai();
120 extern int carg();
121 extern int terr();
122 extern int sate();
123 extern int give();
124 extern int edit();
125 extern int wipe();
126 extern int dump();
127 extern int ldump();
128 extern int ndump();
129 extern int pdump();
130 extern int pboa();
131 extern int sdump();
132 extern int lost();
133 extern int explore();
134 extern int reso();
135 extern int scra();
136 extern int rela();
137 extern int brea();
138 extern int upda();
139 extern int hidd();
140 extern int orde();
141 extern int qorde();
142 extern int sorde();
143 extern int reje();
144 extern int acce();
145 extern int sabo();
146 extern int scut();
147 extern int grin();
148 extern int shar();
149 extern int sail();              /* Forsman's hacks */
150 extern int foll();
151 extern int mobq();
152 extern int name();
153 extern int range();
154 extern int zdon();
155 extern int fuel();
156 extern int multifire();
157 extern int retr();
158 extern int budg();
159 extern int wire();
160 extern int stop();
161 extern int start();
162
163 extern int land();
164 extern int supp();
165 extern int lboa();
166 extern int lcarg();
167 extern int lload();
168 extern int army();
169 extern int lrange();
170 extern int morale();
171 extern int lretr();
172 extern int landmine();
173 extern int fort();
174 extern int march();
175 extern int llook();
176 extern int mission();
177 extern int work();
178 extern int ltend();
179 extern int cede();
180 extern int best();
181 extern int newe();
182 extern int starve();
183
184 extern int setres();
185 extern int setsector();
186
187 extern int disa();
188 extern int enab();
189
190 /*
191  * Undeclared functions
192  */
193 extern int quit(void);
194 extern int cens();
195 extern int demo();
196 extern int shi();
197 extern int wing();
198 extern int execute(void);
199 extern int explain(void);
200 extern int set();
201 extern int flash(void);
202 extern int wall();
203 extern int shut();
204 extern int togg();
205 extern int stre();
206 extern int skyw();
207 extern int play();
208 extern int swaps();
209
210 extern int trad();
211 extern int mark();
212 extern int buy();
213 extern int mult();
214 extern int sell();
215 extern int rese();
216
217 extern int repa();
218 extern int fina();
219 extern int coll();
220 extern int cons();
221 extern int ledg();
222 extern int shark();
223 extern int offe();
224
225 extern int mobupdate();
226
227 extern int sinfra();
228 extern int improve();
229 extern int lstats();
230 extern int pstat();
231 extern int sstat();
232
233 struct cmndstr player_coms[] = {
234 /*  command form                       cost     addr    permit */
235     {"accept  [as-COUNTRY]", 0, acce, C_MOD, NORM},
236     {"add <NAT> <NAME> <REP> <STATUS> <c|w|i>", 0, add, C_MOD, GOD},
237     {"announce {message}", 0, tele, C_MOD, VIS},
238     {"anti <SECT>", 3, anti, C_MOD, NORM + MONEY + CAP},
239     {"apropos <topic>", 0, apro, 0, VIS},
240     {"arm <PLANE> <NUKETYPE> <airburst?>", 3, arm, C_MOD,
241      NORM + MONEY + CAP},
242     {"army <ARMY> <UNITS>", 0, army, C_MOD, NORM},
243     {"assault <to-SECT> <from-SHIP> [<forts?> <ships?> <arty?> <planes?>]",
244      3, assa, C_MOD, NORM + MONEY + CAP},
245     {"attack <SECT> [<forts?> <ships?> <arty?> <planes?>]", 3, atta, C_MOD,
246      NORM + MONEY + CAP},
247     {"bdes <SECTS> <type>", 0, bdes, C_MOD, NORM},
248     {"bestpath <SECTS> <SECTS>", 0, best, 0, NORM},
249     {"bestdistpath <SECTS> <SECTS>", 0, best, 0, NORM},
250     {"bmap <SECTS|UNIT> [s|l|p|r|t*]", 0, map, C_MOD, NORM},
251     {"board <to-SHIP> [<from-SHIP>|<from-sector>]", 3, boar, C_MOD,
252      NORM + MONEY + CAP},
253     {"bomb <bomber-PLANES> <fighter-PLANES> <pin|strat> <ap-SECT> <PATH|DESTINATION>", 2, bomb, C_MOD, NORM + MONEY + CAP},
254     {"break {sanctuary}", 1, brea, C_MOD, SANCT},
255     {"budget [<sector type|P|S|L|A|M|N|C> <PRIORITY|~>]", 1, budg, 0,
256      NORM},
257     {"build <s|l|b|p|n|t> <SECTS> <type|dir> [<number> <tech> <sure?>]", 1,
258      buil, C_MOD, NORM + MONEY + CAP},
259     {"buy <COMM> <LOT#> <BID/UNIT> <DEST>", 1, buy, C_MOD,
260      CAP + NORM + MONEY},
261     {"bye {log-off}", 0, quit, 0, VIS},
262     {"capital <SECT>", 0, capi, C_MOD, NORM},
263     {"cargo <SHIPS>", 0, carg, 0, NORM},
264 #ifdef CEDE_IS_ALLOWED
265     {"cede <SECTS|SHIPS> <COUNTRY> [se|sh]", 639, cede, C_MOD, NORM},
266 #endif /* CEDE_IS_ALLOWED */
267     {"census <SECTS>", 0, cens, 0, VIS},
268     {"change <country|representative> <NAME>", 0, chan, C_MOD, VIS},
269     {"coastwatch <SECTS>", 1, coas, C_MOD, NORM + CAP},
270     {"collect <LOAN> <SECT>", 2, coll, C_MOD, NORM + MONEY + CAP},
271     {"commodity <SECTS>", 0, comm, 0, VIS},
272     {"consider <loan|treaty> <LOAN/TREATY> <acc|decl|post>", 1, cons,
273      C_MOD, NORM + CAP},
274     {"convert <SECTS> <NUM> [sure?]", 2, conv, C_MOD, NORM + MONEY + CAP},
275     {"country <NATS>", 0, coun, 0, NORM},
276     {"cutoff <SECTS>", 0, cuto, C_MOD, NORM},
277     {"declare <all|friend|neut|hos|war> <NATS>", 2, decl, C_MOD,
278      NORM + CAP},
279     {"deliver <COMM> <SECTS> [q|<THRESH>] [<DIR>]", 1, deli, C_MOD, NORM},
280     {"demobilize <SECTS> <NUM> <active-reserve?> [sure?]", 1, demo, C_MOD,
281      NORM + CAP},
282     {"designate <SECTS> <type> [sure?]", 1, desi, C_MOD, NORM},
283     {"disable", 0, disa, C_MOD, GOD},
284     {"disarm <PLANE>", 2, arm, C_MOD, NORM + MONEY + CAP},
285     {"dissolve <really dissove?>", 0, diss, C_MOD, GOD},
286     {"distribute <SECTS> <DISTSECT|.|h>", 1, dist, C_MOD, NORM},
287     {"drop <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION> <COMM>", 1, drop, C_MOD, NORM + MONEY + CAP},
288     {"dump <SECTS> [<fields>]", 0, dump, 0, NORM},
289     {"echo [<string>]", 0, echo, 0, NORM},
290     {"edit <country|land|unit|ship|plane|nuke> [<KEY> <VALUE>]...", 0,
291      edit, C_MOD, GOD},
292     {"enable", 0, enab, C_MOD, GOD},
293     {"enlist <SECTS> <NUM>", 2, enli, C_MOD, NORM + MONEY + CAP},
294     {"execute <INPUT FILE>", 0, execute, 0, VIS},
295     {"explore <c|m> <SECT> <NUM> <PATH|DESTINATION>", 1, explore, C_MOD,
296      NORM + MONEY + CAP},
297     {"financial", 0, fina, 0, NORM},
298     {"fire <land, ship or sect> <from-SECTS | SHIPS | UNITS> [TO-SECT | SHIP]", 1, multifire, C_MOD, NORM + MONEY + CAP},
299     {"flash <COUNTRY> [<message>]", 0, flash, 0, VIS},
300     {"fleetadd <FLEET> <SHIPS>", 0, flee, C_MOD, NORM},
301     {"fly <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION> <COM>", 2, fly, C_MOD, NORM + MONEY + CAP},
302     {"follow <leader> <SHIPS>", 1, foll, C_MOD, NORM + CAP},
303     {"force <delay time>", 0, force, C_MOD, GOD},
304     {"fortify <UNITS> <MOB>", 1, fort, C_MOD, NORM},
305     {"fuel <s|l> <SHIP/FLEET | UNIT/ARMY> <AMOUNT> [<OILER>]", 1, fuel,
306      C_MOD, NORM},
307     {"give <COMM> <SECT> <NUM>", 0, give, C_MOD, GOD},
308     {"grind <SECT> <NUM>", 1, grin, C_MOD, NORM + MONEY + CAP},
309     {"harden <PLANES> <NUM>", 2, hard, C_MOD, NORM + MONEY + CAP},
310     {"help <topic>", 0, info, 0, VIS},
311     {"headlines [days]", 0, head, C_MOD, VIS},
312     {"hidden <SECTS>", 0, hidd, 0, GOD},
313     {"improve <road|rail|defense> <SECTS> <NUM>", 1, improve, C_MOD,
314      NORM + MONEY + CAP},
315     {"info <topic>", 0, info, 0, VIS},
316     {"land <UNITS>", 0, land, C_MOD, NORM},
317     {"launch <PLANES>", 3, laun, C_MOD, NORM + MONEY + CAP},
318     {"lboard <to-LAND> [<from-sector>]", 3, lboa, C_MOD,
319      NORM + MONEY + CAP},
320     {"lcargo <UNITS>", 0, lcarg, 0, NORM},
321     {"ledger <LOANS>", 0, ledg, 0, NORM},
322     {"level <SECTS>", 0, leve, 0, NORM},
323     {"list of commands", 0, explain, 0, VIS},
324     {"lbmap <SECTS|UNIT> [s|l|p|*]", 0, map, C_MOD, NORM},
325     {"ldump <UNITS> [<fields>]", 0, ldump, 0, NORM},
326     {"lload <COMM|\"land\"|\"plane\"> <UNITS> <NUM|UNITS|PLANES>", 1,
327      lload, C_MOD, NORM + CAP},
328     {"llookout <UNITS>", 1, llook, 0, NORM + CAP},
329     {"lmap <SECTS|UNIT> [s|l|p|*]", 0, map, C_MOD, NORM},
330     {"lmine <UNITS>", 2, landmine, C_MOD, NORM + MONEY + CAP},
331     {"load <COMM|\"land\"|\"plane\"> <SHIPS> <NUM|UNITS|PLANES>", 1, load,
332      C_MOD, NORM + CAP},
333     {"lookout <SHIPS>", 1, look, 0, NORM + CAP},
334     {"lost", 0, lost, 0, NORM},
335     {"lradar <UNITS | SECTS>", 1, rada, 0, NORM + CAP},
336     {"lrange <UNITS> <range>", 1, lrange, C_MOD, NORM + CAP},
337     {"lretreat <UNITS|ARMY> <PATH> [i|h|b|c]", 1, lretr, C_MOD,
338      NORM + CAP},
339     {"lstats <UNITS>", 0, lstats, C_MOD, NORM},
340     {"ltend <COMM> <tender-SHIPS> <NUM> <UNITS>", 1, ltend, C_MOD,
341      NORM + CAP},
342     {"lunload <COMM|\"land\"|\"plane\"> <UNITS> <NUM|UNITS|PLANES>", 1,
343      lload, C_MOD, NORM + CAP},
344     {"market [COMM]", 0, mark, 0, VIS},
345     {"map <SECTS|SHIP>", 0, map, C_MOD, VIS},
346     {"march <UNITS> <PATH|DESTINATION>", 1, march, C_MOD, NORM + CAP},
347     {"mine <SHIPS>", 2, mine, C_MOD, NORM + MONEY + CAP},
348     {"mission <type> <PLANES|SHIPS|UNITS> <mission type> <op sect> [<radius>]", 2, mission, C_MOD, NORM + CAP},
349     {"mobupdate <MINUTES|check>", 0, mobupdate, C_MOD, GOD},
350     {"morale <UNITS> <retreat%>", 1, morale, C_MOD, NORM + CAP},
351     {"motd", 0, show_motd, C_MOD, VIS},
352     {"move <c|m|s|g|p|i|o|b|f|r|u> <SECT> <NUM> <PATH|DESTINATION>", 1,
353      move, C_MOD, NORM + CAP},
354     {"mquota <SHIPS> <value>", 2, mobq, C_MOD, NORM + CAP},
355     {"mult [COUNTRY]", 1, mult, C_MOD, GOD},
356     {"name <SHIPS> <NAME>", 0, name, C_MOD, NORM},
357     {"nation", 0, nati, 0, VIS},
358     {"navigate <SHIPS> <PATH|DESTINATION>", 1, navi, C_MOD, NORM + CAP},
359     {"ndump <SECTS>", 0, ndump, 0, NORM},
360     {"newcap <NAT> [<SECTOR>]", 0, new, C_MOD, GOD},
361     {"neweff <SECTS>", 0, newe, C_MOD, NORM},
362     {"newspaper [days]", 0, news, 0, VIS},
363     {"nmap <SECTS|SHIP>", 0, map, C_MOD, VIS},
364     {"nuke <SECTS>", 0, nuke, 0, NORM},
365     {"offer <loan|treaty> <NAT> [<NUM> <DAYS> <IRATE>]", 1, offe, C_MOD,
366      NORM + MONEY + CAP},
367     {"offset <SECT|NAT>", 0, offs, C_MOD, GOD},
368     {"order <SHIPS> <c|s|r|d|l> ", 1, orde, C_MOD, NORM + CAP},
369     {"origin <SECT>", 1, orig, C_MOD, NORM},
370     {"paradrop <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>", 3, para, C_MOD, NORM + MONEY + CAP},
371     {"path <SECT>", 0, path, 0, NORM},
372     {"payoff <SHIPS>", 0, payo, C_MOD, NORM},
373     {"pbmap <SECTS|UNIT> [s|l|p|*]", 0, map, C_MOD, NORM},
374     {"pboard <PLANES>", 3, pboa, C_MOD, NORM + MONEY + CAP},
375     {"pdump <PLANES> [<fields>]", 0, pdump, 0, NORM},
376     {"plane <SECTS>", 0, plan, 0, NORM},
377     {"players", 0, play, 0, VIS},
378     {"pmap <SECTS|UNIT> [s|l|p|*]", 0, map, C_MOD, NORM},
379     {"power [[\"new\" [<NUMBER OF COUNTRIES>]] | [\"country\" <COUNTRY NUMBER>]]", 0, powe, C_MOD, VIS},
380     {"pray", 0, tele, C_MOD, NORM},
381     {"production <SECTS>", 0, prod, 0, NORM},
382     {"pstat <PLANES>", 0, pstat, 0, NORM},
383     {"qorder <SHIPS>", 0, qorde, C_MOD, NORM + CAP},
384     {"quit", 0, quit, 0, VIS},
385     {"radar <SHIPS | SECTS>", 1, rada, 0, NORM + CAP},
386     {"range <PLANES> <range>", 1, range, C_MOD, NORM + CAP},
387     {"read", 0, rea, C_MOD, VIS},
388     {"realm <number> [<SECTS>]", 0, real, C_MOD, NORM},
389     {"recon <spy-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>", 3,
390      reco, C_MOD, NORM + MONEY + CAP},
391     {"retreat <SHIPS|FLEET> <PATH> [i|t|s|h|b|d|u|c]", 1, retr, C_MOD,
392      NORM + CAP},
393     {"relations  [as-COUNTRY]", 0, rela, 0, VIS},
394     {"reject <reject|accept> <announcements|mail|treaties|loans> <NAT>", 2,
395      reje, C_MOD, NORM},
396     {"repay <LOAN> <NUM>", 1, repa, C_MOD, NORM + MONEY + CAP},
397     {"report <NATS>", 0, repo, 0, VIS},
398     {"reset <lot #> <0|price>", 1, rese, C_MOD, NORM + CAP},
399     {"resource <SECTS>", 0, reso, 0, NORM},
400     {"route <COMM> <SECTS>", 1, rout, 0, NORM},
401     {"sabotage <UNITS>", 1, sabo, C_MOD, NORM + MONEY + CAP},
402     {"sail <SHIPS> <PATH>", 1, sail, C_MOD, NORM + CAP},
403     {"satellite <PLANE> [<se|sh|l> [?cond&cond&...]]", 1, sate, 0,
404      NORM + MONEY + CAP},
405     {"sbmap <SECTS|UNIT> [s|l|p|*]", 0, map, C_MOD, NORM},
406     {"scrap <s|p|l> <SHIPS|PLANES|UNITS>", 2, scra, C_MOD,
407      NORM + MONEY + CAP},
408     {"scuttle <s|p|l> <SHIPS|PLANES|UNITS>", 5, scut, C_MOD, NORM + CAP},
409     {"sdump <SHIPS> [<fields>]", 0, sdump, 0, NORM},
410     {"sect <SECTS>", 0, sct, 0, NORM},
411     {"sell <COMM> <SECTS> <NUM> <NUM>", 1, sell, C_MOD, NORM + CAP},
412     {"set <TYPE> <LIST> <PRICE>", 1, set, C_MOD, NORM + CAP},
413     {"setsector <TYPE> <SECTS> <NUM>", 0, setsector, C_MOD, GOD},
414     {"setresource <TYPE> <SECTS> <NUM>", 0, setres, C_MOD, GOD},
415     {"shark <LOAN>", 25, shark, C_MOD, NORM + MONEY + CAP},
416     {"sharebmap <CNUM/CNAME> <SECTS> [<des>]", 0, shar, C_MOD, NORM},
417     {"ship <SHIPS>", 0, shi, 0, NORM},
418     {"shoot <c|u> <SECTS> <NUMBER>", 3, shoo, C_MOD, NORM + MONEY + CAP},
419     {"show <TYPE> <\"build\"|\"stats\"|\"cap\"> [<tech>]", 0, show, 0,
420      VIS},
421     {"shutdown [<minutes>] <disable update?>", 0, shut, 0, GOD},
422     {"sinfrastructure <SECTS>", 0, sinfra, 0, VIS},
423     {"skywatch <SECTS>", 1, skyw, C_MOD, NORM + CAP},
424     {"smap <SECTS|UNIT> [s|l|p|*]", 0, map, C_MOD, NORM},
425     {"sonar <SHIPS> <brief?>", 1, sona, C_MOD, NORM + CAP},
426     {"sorder <SHIPS>", 0, sorde, C_MOD, NORM + CAP},
427     {"spy <SECTS>", 1, spy, C_MOD, NORM + CAP},
428     {"sstat <SHIPS>", 0, sstat, 0, NORM},
429     {"start <SECTS>", 1, start, C_MOD, NORM + CAP},
430     {"starvation [<SECTS>|l <UNITS>|s <SHIPS>]", 0, starve, 0, NORM},
431     {"stop <SECTS>", 1, stop, C_MOD, NORM + CAP},
432     {"strength <SECTS>", 1, stre, C_MOD, NORM},
433     {"supply <LAND UNITS>", 1, supp, C_MOD, NORM + CAP},
434     {"survey <COMM|VAR> <SECTS>", 0, surv, 0, NORM + CAP},
435     {"swapsector <SECT> <SECT>", 0, swaps, C_MOD, GOD},
436     {"sweep <sweep-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>",
437      3, reco, C_MOD, NORM + MONEY + CAP},
438     {"telegram <NAT>", 0, tele, C_MOD, NORM},
439     {"tend <COMM|\"land\"> <tender-SHIPS> <NUM|UNIT> <dest-SHIPS>", 1,
440      tend, C_MOD, NORM + CAP},
441     {"territory <SECTS> <NUMBER> [<FIELD>]", 0, terr, C_MOD, NORM},
442     {"test <c|m|s|g|p|i|o|b|f|r|u> <SECT> <NUM> <PATH|DESTINATION>", 1,
443      move, 0, NORM + CAP},
444     {"threshold <COMM> <SECTS> <THRESH>", 1, thre, C_MOD, NORM},
445     {"toggle [inform|flash|beep|coastwatch|sonar|techlists] [on|off]", 0,
446      togg, C_MOD, VIS},
447     {"torpedo <submarine-SHIPS> <target-SHIP>", 3, torp, C_MOD,
448      NORM + MONEY + CAP},
449     {"trade", 1, trad, C_MOD, NORM + CAP + MONEY},
450     {"transport <\"nuke\"|\"plane\"> <SECT|PLANES> [<NUKETYPE> <number>] <PATH|DESTINATION>", 1, tran, C_MOD, NORM + CAP},
451     {"treaty <TREATIES>", 0, trea, 0, NORM + MONEY + CAP},
452     {"turn <\"on\"|\"off\"|\"mess\">", 0, turn, C_MOD, GOD},
453     {"unload <COMM|\"land\"|\"plane\"> <SHIPS> <NUM|UNIT|PLANE>", 1, load,
454      C_MOD, NORM + CAP},
455     {"unsail <SHIPS>", 1, sail, C_MOD, NORM + CAP},
456     {"update", 0, upda, 0, VIS},
457     {"upgrade <SHIPS|LAND UNITS|PLANES>", 1, upgr, C_MOD,
458      NORM + MONEY + CAP},
459     {"version", 0, vers, 0, VIS},
460     {"wait", 0, wai, C_MOD, GOD},
461     {"wall [<message>]", 0, wall, C_MOD, NORM},
462     {"wingadd <WING> <PLANES>", 1, wing, C_MOD, NORM},
463     {"wipe <SECTS>", 1, wipe, C_MOD, NORM},
464     {"wire [yes|no|<days>]", 0, rea, C_MOD, VIS},
465     {"work <LAND UNITS> <AMOUNT>", 1, work, C_MOD, NORM + MONEY + CAP},
466     {"zdone <y|n|c>", 0, zdon, C_MOD, NORM},
467     {0, 0, 0, 0, 0}
468 };