]> git.pond.sub.org Git - empserver/blob - src/lib/player/empmod.c
Import of Empire 4.2.12
[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, NORM+MONEY+CAP },
241 { "army <ARMY> <UNITS>",                  0,    army,   C_MOD, NORM },
242 { "assault <to-SECT> <from-SHIP> [<forts?> <ships?> <arty?> <planes?>]",3,assa,C_MOD, NORM+MONEY+CAP },
243 { "attack <SECT> [<forts?> <ships?> <arty?> <planes?>]",3,atta,C_MOD, NORM+MONEY+CAP },
244 { "bdes <SECTS> <type>",                  0,    bdes,   C_MOD, NORM },
245 { "bestpath <SECTS> <SECTS>",             0,    best,   0, NORM },
246 { "bestdistpath <SECTS> <SECTS>",         0,    best,   0, NORM },
247 { "bmap <SECTS|UNIT> [s|l|p|r|t*]",       0,    map,    C_MOD, NORM },
248 { "board <to-SHIP> [<from-SHIP>|<from-sector>]",          3,    boar,   C_MOD, NORM+MONEY+CAP },
249 { "bomb <bomber-PLANES> <fighter-PLANES> <pin|strat> <ap-SECT> <PATH|DESTINATION>",2,bomb,C_MOD, NORM+MONEY+CAP },
250 { "break {sanctuary}",                    1,    brea,   C_MOD, SANCT },
251 { "budget [<sector type|P|S|L|A|M|N|C> <PRIORITY|~>]",1,budg,0, NORM },
252 { "build <s|l|b|p|n|t> <SECTS> <type|dir> [<number> <tech> <sure?>]",1, buil,   C_MOD, NORM+MONEY+CAP },
253 { "buy <COMM> <LOT#> <BID/UNIT> <DEST>",  1,    buy,    C_MOD, CAP+NORM+MONEY },
254 { "bye {log-off}",                        0,    quit,   0, VIS },
255 { "capital <SECT>",                       0,    capi,   C_MOD, NORM },
256 { "cargo <SHIPS>",                        0,    carg,   0, NORM },
257 #ifdef CEDE_IS_ALLOWED
258 { "cede <SECTS|SHIPS> <COUNTRY> [se|sh]",        639,   cede,   C_MOD, NORM },
259 #endif /* CEDE_IS_ALLOWED */
260 { "census <SECTS>",                       0,    cens,   0, VIS },
261 { "change <country|representative> <NAME>",0,   chan,   C_MOD, VIS },
262 { "coastwatch <SECTS>",                   1,    coas,   C_MOD, NORM+CAP },
263 { "collect <LOAN> <SECT>",                2,    coll,   C_MOD, NORM+MONEY+CAP },
264 { "commodity <SECTS>",                    0,    comm,   0, VIS },
265 { "consider <loan|treaty> <LOAN/TREATY> <acc|decl|post>",1,cons,C_MOD, NORM+CAP },
266 { "convert <SECTS> <NUM> [sure?]",        2,    conv,   C_MOD, NORM+MONEY+CAP },
267 { "country <NATS>",                       0,    coun,   0, NORM },
268 { "cutoff <SECTS>",                       0,    cuto,   C_MOD, NORM },
269 { "declare <all|friend|neut|hos|war> <NATS>",  2,       decl,   C_MOD, NORM+CAP },
270 { "deliver <COMM> <SECTS> [q|<THRESH>] [<DIR>]",1,      deli,   C_MOD, NORM },
271 { "demobilize <SECTS> <NUM> <active-reserve?> [sure?]",1,       demo,   C_MOD, NORM+CAP },
272 { "designate <SECTS> <type> [sure?]",     1,    desi,   C_MOD, NORM },
273 { "disable",                              0,    disa,   C_MOD, GOD },
274 { "disarm <PLANE>",                     2,      arm,    C_MOD, NORM+MONEY+CAP },
275 { "dissolve <really dissove?>",           0,    diss,   C_MOD, GOD },
276 { "distribute <SECTS> <DISTSECT|.|h>",  1,      dist,   C_MOD, NORM },
277 { "drop <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION> <COMM>",1,drop,C_MOD, NORM+MONEY+CAP },
278 { "dump <SECTS> [<fields>]",              0,    dump,   0, NORM },
279 { "echo [<string>]",                      0,    echo,   0, NORM },
280 { "edit <country|land|unit|ship|plane|nuke>",   0,      edit,   C_MOD, GOD },
281 { "enable",                               0,    enab,   C_MOD, GOD },
282 { "enlist <SECTS> <NUM>",                 2,    enli,   C_MOD, NORM+MONEY+CAP },
283 { "execute <INPUT FILE>",                 0,    execute,0, VIS },
284 { "explore <c|m> <SECT> <NUM> <PATH|DESTINATION>",1,explore,    C_MOD, NORM+MONEY+CAP },
285 { "financial",                            0,    fina,   0, NORM },
286 { "fire <land, ship or sect> <from-SECTS | SHIPS | UNITS> [TO-SECT | SHIP]",1,multifire,C_MOD, NORM+MONEY+CAP },
287 { "flash <COUNTRY> [<message>]",          0,    flash,  0, VIS },
288 { "fleetadd <FLEET> <SHIPS>",             0,    flee,   C_MOD, NORM },
289 { "fly <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION> <COM>",2,fly,C_MOD, NORM+MONEY+CAP },
290 { "follow <leader> <SHIPS>",            1,      foll,   C_MOD, NORM+CAP },
291 { "force <delay time>",                         0,      force,  C_MOD, GOD },
292 { "fortify <UNITS> <MOB>",                1,    fort,   C_MOD, NORM },
293 { "fuel <s|l> <SHIP/FLEET | UNIT/ARMY> <AMOUNT> [<OILER>]",     1,      fuel,   C_MOD, NORM },
294 { "give <COMM> <SECT> <NUM>",           0,      give,   C_MOD, GOD },
295 { "grind <SECT> <NUM>",                 1,      grin,   C_MOD, NORM+MONEY+CAP },
296 { "harden <PLANES> <NUM>",                2,    hard,   C_MOD, NORM+MONEY+CAP },
297 { "help <topic>",                         0,    info,   0, VIS },
298 { "headlines [days]",                     0,    head,   C_MOD, VIS },
299 { "hidden <SECTS>",                     0,      hidd,   0, GOD },
300 { "improve <road|rail|defense> <SECTS> <NUM>",1,        improve,C_MOD, NORM+MONEY+CAP },
301 { "info <topic>",                         0,    info,   0, VIS },
302 { "land <UNITS>",                               0,      land,   C_MOD, NORM },
303 { "launch <PLANES>",                      3,    laun,   C_MOD, NORM+MONEY+CAP },
304 { "lboard <to-LAND> [<from-sector>]",     3,    lboa,   C_MOD, NORM+MONEY+CAP },
305 { "lcargo <UNITS>",                       0,    lcarg,  0, NORM },
306 { "ledger <LOANS>",                       0,    ledg,   0, NORM },
307 { "level <SECTS>",                        0,    leve,   0, NORM },
308 { "list of commands",                     0,    explain,0, VIS },
309 { "lbmap <SECTS|UNIT> [s|l|p|*]",         0,    map,    C_MOD, NORM },
310 { "ldump <UNITS> [<fields>]",             0,    ldump,  0, NORM },
311 { "lload <COMM|\"land\"|\"plane\"> <UNITS> <NUM|UNITS|PLANES>",1,       lload,  C_MOD, NORM+CAP },
312 { "llookout <UNITS>",                     1,    llook,  0, NORM+CAP },
313 { "lmap <SECTS|UNIT> [s|l|p|*]",          0,    map,    C_MOD, NORM },
314 { "lmine <UNITS>",                        2,    landmine,C_MOD, NORM+MONEY+CAP },
315 { "load <COMM|\"land\"|\"plane\"> <SHIPS> <NUM|UNITS|PLANES>",1,load,C_MOD, NORM+CAP },
316 { "lookout <SHIPS>",                      1,    look,   0, NORM+CAP },
317 { "lost",                                 0,      lost,   0, NORM },
318 { "lradar <UNITS | SECTS>",               1,    rada,   0, NORM+CAP },
319 { "lrange <UNITS> <range>",             1,      lrange, C_MOD, NORM+CAP },
320 { "lretreat <UNITS|ARMY> <PATH> [i|h|b|c]", 1,  lretr,  C_MOD, NORM+CAP },
321 { "lstats <UNITS>",                     0,      lstats, C_MOD, NORM },
322 { "ltend <COMM> <tender-SHIPS> <NUM> <UNITS>",1,        ltend,  C_MOD, NORM+CAP },
323 { "lunload <COMM|\"land\"|\"plane\"> <UNITS> <NUM|UNITS|PLANES>",1,lload,       C_MOD, NORM+CAP },
324 { "market [COMM]",                        0,    mark,   0, VIS },
325 { "map <SECTS|SHIP>",                     0,    map,    C_MOD, VIS },
326 { "march <UNITS> <PATH|DESTINATION>",     1,    march,  C_MOD, NORM+CAP },
327 { "mine <SHIPS>",                         2,    mine,   C_MOD, NORM+MONEY+CAP },
328 { "mission <type> <PLANES|SHIPS|UNITS> <mission type> <op sect> [<radius>]", 2,mission,C_MOD, NORM+CAP },
329 { "mobupdate <MINUTES|check>",            0,    mobupdate,      C_MOD, GOD },
330 { "morale <UNITS> <retreat%>",          1,      morale, C_MOD, NORM+CAP },
331 { "motd",                                       0,      show_motd, C_MOD, VIS },
332 { "move <c|m|s|g|p|i|o|b|f|r|u> <SECT> <NUM> <PATH|DESTINATION>",1,move,C_MOD, NORM+CAP },
333 { "mquota <SHIPS> <value>",             2,      mobq,   C_MOD, NORM+CAP },
334 { "mult [COUNTRY]",                       1,    mult,   C_MOD, GOD },
335 { "name <SHIPS> <NAME>",                        0,      name,   C_MOD, NORM },
336 { "nation",                               0,    nati,   0, VIS },
337 { "navigate <SHIPS> <PATH|DESTINATION>",  1,    navi,   C_MOD, NORM+CAP },
338 { "ndump <SECTS>",                        0,    ndump,  0, NORM },
339 { "newcap <NAT> [<SECTOR>]",              0,    new,    C_MOD, GOD },
340 { "neweff <SECTS>",                       0,    newe,   C_MOD, NORM },
341 { "newspaper [days]",                     0,    news,   0, VIS },
342 { "nmap <SECTS|SHIP>",                    0,    map,    C_MOD, VIS },
343 { "nuke <SECTS>",                         0,    nuke,   0, NORM },
344 { "offer <loan|treaty> <NAT> [<NUM> <DAYS> <IRATE>]",1,offe,C_MOD, NORM+MONEY+CAP },
345 { "offset <SECT|NAT>",                    0,    offs,   C_MOD, GOD },
346 { "order <SHIPS> <c|s|r|d|l> ",         1,      orde,   C_MOD, NORM+CAP },
347 { "origin <SECT>",                        1,    orig,   C_MOD, NORM },
348 { "paradrop <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>",3,para,C_MOD, NORM+MONEY+CAP },
349 { "path <SECT>",                          0,    path,   0, NORM },
350 { "payoff <SHIPS>",                       0,    payo,   C_MOD, NORM },
351 { "pbmap <SECTS|UNIT> [s|l|p|*]",         0,    map,    C_MOD, NORM },
352 { "pboard <PLANES>",                      3,    pboa,   C_MOD, NORM+MONEY+CAP },
353 { "pdump <PLANES> [<fields>]",            0,    pdump,  0, NORM },
354 { "plane <SECTS>",                        0,    plan,   0, NORM },
355 { "players",                              0,      play,   0, VIS },
356 { "pmap <SECTS|UNIT> [s|l|p|*]",          0,    map,    C_MOD, NORM },
357 { "power [[\"new\" [<NUMBER OF COUNTRIES>]] | [\"country\" <COUNTRY NUMBER>]]",                      0, powe,   C_MOD, VIS },
358 { "pray",                                 0,      tele,   C_MOD, NORM },
359 { "production <SECTS>",                   0,    prod,   0, NORM },
360 { "pstat <PLANES>",                       0,    pstat,  0, NORM },
361 { "qorder <SHIPS>",                     0,      qorde,  C_MOD, NORM+CAP },
362 { "quit",                                 0,    quit,   0, VIS },
363 { "radar <SHIPS | SECTS>",                1,    rada,   0, NORM+CAP },
364 { "range <PLANES> <range>",             1,      range,  C_MOD, NORM+CAP },
365 { "read",                                 0,    rea,    C_MOD, VIS },
366 { "realm <number> [<SECTS>]",             0,    real,   C_MOD, NORM },
367 { "recon <spy-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>",3,reco,C_MOD, NORM+MONEY+CAP },
368 { "retreat <SHIPS|FLEET> <PATH> [i|t|s|h|b|d|u|c]", 1,retr,     C_MOD, NORM+CAP },
369 { "relations  [as-COUNTRY]",            0,      rela,   0, VIS },
370 { "reject <reject|accept> <announcements|mail|treaties|loans> <NAT>",2,reje,C_MOD, NORM },
371 { "repay <LOAN> <NUM>",                   1,    repa,   C_MOD, NORM+MONEY+CAP },
372 { "report <NATS>",                        0,    repo,   0, VIS },
373 { "reset <lot #> <0|price>",            1,      rese,   C_MOD, NORM+CAP },
374 { "resource <SECTS>",                     0,    reso,   0, NORM },
375 { "route <COMM> <SECTS>",                 1,    rout,   0, NORM },
376 { "sabotage <UNITS>",                     1,    sabo,   C_MOD, NORM+MONEY+CAP },
377 { "sail <SHIPS> <PATH>",                        1,      sail,   C_MOD, NORM+CAP },
378 { "satellite <PLANE> [<se|sh|l> [?cond&cond&...]]",1,   sate,   0, NORM+MONEY+CAP },
379 { "sbmap <SECTS|UNIT> [s|l|p|*]",         0,    map,    C_MOD, NORM },
380 { "scrap <s|p|l> <SHIPS|PLANES|UNITS>",   2,    scra,   C_MOD, NORM+MONEY+CAP },
381 { "scuttle <s|p|l> <SHIPS|PLANES|UNITS>",       5,      scut,   C_MOD, NORM+CAP },
382 { "sdump <SHIPS> [<fields>]",             0,    sdump,  0, NORM },
383 { "sect <SECTS>",                         0,    sct,    0, NORM },
384 { "sell <COMM> <SECTS> <NUM> <NUM>",      1,    sell,   C_MOD, NORM+CAP },
385 { "set <TYPE> <LIST> <PRICE>",            1,    set,    C_MOD, NORM+CAP },
386 { "setsector <TYPE> <SECTS> <NUM>",     0,      setsector,C_MOD, GOD },
387 { "setresource <TYPE> <SECTS> <NUM>",   0,      setres, C_MOD, GOD },
388 { "shark <LOAN>",                        25,      shark,  C_MOD, NORM+MONEY+CAP },
389 { "sharebmap <CNUM/CNAME> <SECTS> [<des>]", 0, shar, C_MOD, NORM },
390 { "ship <SHIPS>",                         0,    shi,    0, NORM },
391 { "shoot <c|u> <SECTS> <NUMBER>",         3,    shoo,   C_MOD, NORM+MONEY+CAP },
392 { "show <TYPE> <\"build\"|\"stats\"|\"cap\"> [<tech>]", 0,show, 0, VIS },
393 { "shutdown [<minutes>] <disable update?>",                 0,  shut,   0, GOD },
394 { "sinfrastructure <SECTS>",              0,    sinfra, 0, VIS },
395 { "skywatch <SECTS>",                     1,    skyw,   C_MOD, NORM+CAP },
396 { "smap <SECTS|UNIT> [s|l|p|*]",          0,    map,    C_MOD, NORM },
397 { "sonar <SHIPS> <brief?>",             1,      sona,   C_MOD, NORM+CAP },
398 { "sorder <SHIPS>",                     0,      sorde,  C_MOD, NORM+CAP },
399 { "spy <SECTS>",                                1,      spy,    C_MOD, NORM+CAP },
400 { "sstat <SHIPS>",                         0,   sstat,  0, NORM },
401 { "start <SECTS>",                      1,      start,  C_MOD, NORM+CAP },
402 { "starvation [<SECTS>|l <UNITS>|s <SHIPS>]",  0,       starve, 0, NORM },
403 { "stop <SECTS>",                       1,      stop,   C_MOD, NORM+CAP },
404 { "strength <SECTS>",                   1,      stre,   C_MOD, NORM },
405 { "supply <LAND UNITS>",                  1,    supp,   C_MOD, NORM+CAP },
406 { "survey <COMM|VAR> <SECTS>",            0,    surv,   0, NORM+CAP },
407 { "swapsector <SECT> <SECT>",           0,      swaps,  C_MOD, GOD },
408 { "sweep <sweep-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>",3,reco,C_MOD, NORM+MONEY+CAP },
409 { "telegram <NAT>",                       0,    tele,   C_MOD, NORM },
410 { "tend <COMM|\"land\"> <tender-SHIPS> <NUM|UNIT> <dest-SHIPS>",1,tend, C_MOD, NORM+CAP },
411 { "territory <SECTS> <NUMBER> [<FIELD>]", 0,    terr,   C_MOD, NORM },
412 { "test <c|m|s|g|p|i|o|b|f|r|u> <SECT> <NUM> <PATH|DESTINATION>",1,move,0, NORM+CAP },
413 { "threshold <COMM> <SECTS> <THRESH>",    1,    thre,   C_MOD, NORM },
414 { "toggle [inform|flash|beep|coastwatch|sonar|techlists] [on|off]",          0,      togg,   C_MOD, VIS },
415 { "torpedo <submarine-SHIPS> <target-SHIP>",3,  torp,   C_MOD, NORM+MONEY+CAP },
416 { "trade",                                1,    trad,   C_MOD, NORM+CAP+MONEY },
417 { "transport <\"nuke\"|\"plane\"> <SECT|PLANES> [<NUKETYPE> <number>] <PATH|DESTINATION>",1,tran,C_MOD, NORM+CAP },
418 { "treaty <TREATIES>",                    0,    trea,   0, NORM+MONEY+CAP },
419 { "turn <\"on\"|\"off\"|\"mess\">",       0,    turn,   C_MOD, GOD },
420 { "unload <COMM|\"land\"|\"plane\"> <SHIPS> <NUM|UNIT|PLANE>",1,load,C_MOD, NORM+CAP },
421 { "unsail <SHIPS>",                     1,      sail,   C_MOD, NORM+CAP },
422 { "update",                               0,    upda,   0, VIS },
423 { "upgrade <SHIPS|LAND UNITS|PLANES>",    1,    upgr,   C_MOD, NORM+MONEY+CAP },
424 { "version",                              0,    vers,   0, VIS },
425 { "wait",                                 0,    wai,    C_MOD, GOD },
426 { "wall [<message>]",                     0,    wall,   C_MOD, NORM },
427 { "wingadd <WING> <PLANES>",              1,    wing,   C_MOD, NORM },
428 { "wipe <SECTS>",                               1,      wipe,   C_MOD, NORM },
429 { "wire [yes|no|<days>]",                 0,    rea,    C_MOD, VIS },
430 { "work <LAND UNITS> <AMOUNT>",         1,      work,   C_MOD, NORM+MONEY+CAP },
431 { "zdone <y|n|c>",                      0,      zdon,   C_MOD, NORM }, 
432 { 0,                                    0,      0,      0,      0 }
433 };