static char *RCSid = "$Header: /usr/brule/guest/empire/empire/emprcs/lib/player/empmod.c,v 2.35 1995/10/24 04:37:45 empire Exp $";

/*
 * empmod.c
 *
 * Command/function mapping for empire.  Named empmod for historical
 * reasons -- empire used to be broken into seven modules
 * on the venerable pdp 11 so it could fit in 64k I/D space.
 *
 * from PSL Empire, 1985
 */

#include "misc.h"
#include "com.h"
#include "nat.h"
#include "file.h"

extern	int  add();
extern	int assa();
extern	int atta();
extern	int boar();
extern	int bdes();
extern	int bomb();
extern	int buil();
extern	int chan();
extern	int coas();
extern	int coll();
extern	int comm();
extern	int cons();
extern	int coun();
extern	int decl();
extern	int deli();
extern	int show();
extern	int show_motd();
extern	int desi();
extern	int diss();
extern	int drop();
extern	int	echo();
extern	int enli();
extern	int fire();
extern	int flee();
extern	int  fly();
extern	int force();
extern	int info();
extern	int ledg();
extern	int load();
extern	int look();
extern	int  map();
extern	int mine();
extern  int move();
extern	int nati();
extern	int navi();
extern  int head(), news();
extern	int nuke();
extern	int offe();
extern	int offs();
extern	int para();
extern	int path();
#ifdef TRADESHIPS
extern	int payo();
#endif /* TRADESHIPS */
extern	int powe();
extern	int rada();
extern	int  rea();
extern	int real();
extern	int reco();
extern	int repa();
extern	int rout();
extern	int sona();
extern	int sync();
extern	int  spy();
extern	int tele();
extern	int tend();
extern	int torp();
extern	int trad();
extern  int tran();
extern	int trea();
extern	int turn();
extern	int vers();
/*
 * new commands
 */
extern	int buy();
extern	int mult();
extern	int repo();
extern	int fina();
extern	int laun();
extern	int new();
extern	int shoo();
extern	int thre();
extern	int dist();
extern	int sct();
extern	int plan();
extern	int arm();
extern	int hard();
extern	int upgr();
extern	int surv();
extern	int capi();
extern	int orig();
extern	int mark();
extern	int conv();
extern  int leve();
extern	int cuto();
extern	int prod();
extern	int  wai();
extern	int carg();
extern	int terr();
extern	int sate();
extern	int give();
extern	int edit();
extern	int wipe();
extern	int dump();
extern	int expl();
extern	int reso();
extern	int scra();
extern	int rela();
extern	int brea();
extern	int upda();
extern	int hidd();
extern	int orde();
extern	int qorde();
extern  int sorde(); 
extern	int reje();
extern	int acce();
extern	int scut();
extern	int grin();
extern	int shar();
#ifdef	SAIL
extern	int sail();	/* Forsman's hacks */
extern	int foll();	/**/
extern	int mobq();	/**/
#endif	/* SAIL */
#ifdef	SHIPNAMES
extern	int name();
#endif	/* SHIPNAMES */
extern	int range();
#ifdef	DEMANDUPDATE
extern	int zdon();
#endif	/* DEMANDUPDATE */
extern	int fuel();
extern	int multifire();
extern	int retr();
extern	int budg();
extern	int wire();
extern	int stop();
extern	int start();

extern	int land();
extern	int supp();
extern	int lcarg();
extern	int lload();
extern	int army();
extern	int lrange();
extern	int morale();
extern	int lretr();
extern	int landmine();
extern	int fort();
extern	int march();
extern	int llook();
extern	int mission();
extern	int work();
extern	int ltend();
extern	int cede();
extern	int best();
extern	int newe();
extern	int starve();

extern	int setres();
extern	int setsector();

extern	int disa();
extern	int enab();

/*
 * Undeclared functions
 */
extern	int quit();
extern	int cens();
extern	int demo();
extern	int sell();
extern	int shi();
extern	int wing();
extern	int execute();
extern	int explain();
extern	int set();
extern	int flash();
extern	int wall();
extern	int shut();
extern  int togg();
extern  int stre();
extern  int skyw();
extern 	int play();
extern 	int swaps();

struct  comstr  player_coms[]  = {
/* command form                       cost	addr  permit */
"accept  [as-COUNTRY]",			0,	acce,	C_MOD, NORM,
"add <NAT> <NAME> <REP> <STATUS> <c|w|i>",0,	add,	C_MOD, GOD,
"announce {message}",                   0,	tele,	C_MOD, NORM,
"arm <PLANE> <NUKETYPE> <airburst?>",   3,	arm,	C_MOD, NORM+MONEY+CAP,
"army <ARMY> <UNITS>",                  0,	army,	C_MOD, NORM,
"assault <to-SECT> <from-SHIP> [<forts?> <ships?> <arty?> <planes?>]",3,assa,C_MOD, NORM+MONEY+CAP,
"attack <SECT> [<forts?> <ships?> <arty?> <planes?>]",3,atta,C_MOD, NORM+MONEY+CAP,
"bdes <SECTS> <type>",                  0,	bdes,	C_MOD, NORM,
"bestpath <SECTS> <SECTS>",             0,	best,	0, NORM,
"bestdistpath <SECTS> <SECTS>",         0,	best,	0, NORM,
"bmap <SECTS|UNIT> [s|l|p|r|t*]",                         0,	map,	0, NORM,
"board <to-SHIP> [<from-SHIP>|<from-sector>]",          3,	boar,	C_MOD, NORM+MONEY+CAP,
"bomb <bomber-PLANES> <fighter-PLANES> <pin|strat> <ap-SECT> <PATH|DESTINATION>",2,bomb,C_MOD, NORM+MONEY+CAP,
"break {sanctuary}",                    1,	brea,	C_MOD, SANCT,
"budget [<sector type|P|S|L|A|M|N|C> <PRIORITY|~>]",1,budg,0, NORM,
"build <s|l|b|p|n> <SECTS> <type|dir> [<number> <tech> <sure?>]",1,	buil,	C_MOD, NORM+MONEY+CAP,
"buy <COMM> [<NAT> <NUM> <SECT>]",      1,	buy,	C_MOD, GOD,
"bye {log-off}",                        0,	quit,	0, VIS,
"capital <SECT>",                       0,	capi,	C_MOD, NORM,
"cargo <SHIPS>",                        0,	carg,	0, NORM,
"cede <SECTS|SHIPS> <COUNTRY>",        50,	cede,	C_MOD, NORM,
"census <SECTS>",                       0,	cens,	0, VIS,
"change <country|representative> <NAME>",0,	chan,	C_MOD, NORM,
"coastwatch <SECTS>",                   1,	coas,	C_MOD, NORM+CAP,
"collect <LOAN> <SECT>",                2,	coll,	C_MOD, GOD,
"commodity <SECTS>",                    0,	comm,	0, VIS,
"consider <loan|treaty> <LOAN/TREATY> <acc|decl|post>",1,cons,C_MOD, GOD,
"convert <SECTS> <NUM> [sure?]",        2,	conv,	C_MOD, NORM+MONEY+CAP,
"country <NATS>",                       0,	coun,	0, NORM,
"cutoff <SECTS>",                       0,	cuto,	C_MOD, NORM,
"declare <all|friend|neut|hos|war> <NATS>",  2,	decl,	C_MOD, NORM+CAP,
"deliver <COMM> <SECTS> [q|<THRESH>] [<DIR>]",1,	deli,	C_MOD, NORM,
"demobilize <SECTS> <NUM> <active-reserve?> [sure?]",1,	demo,	C_MOD, NORM+CAP,
"designate <SECTS> <type> [sure?]",     1,	desi,	C_MOD, NORM,
"disable",                              0,	disa,	C_MOD, GOD,
"disarm <PLANE>",			2,	arm,	C_MOD, NORM+MONEY+CAP,
"dissolve <really dissove?>",           0,	diss,	C_MOD, GOD,
"distribute <SECTS> <DISTSECT|.|h>",	1,	dist,	C_MOD, NORM,
"drop <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION> <COMM>",1,drop,C_MOD, NORM+MONEY+CAP,
"dump <SECTS>",	                        0,	dump,	0, NORM,
"echo [<string>]",                      0,	echo,   0, NORM,
"edit <country|unit|ship|plane|nuke>",	0,	edit,	C_MOD, GOD,
"enable",                               0,	enab,	C_MOD, GOD,
"enlist <SECTS> <NUM>",                 2,	enli,	C_MOD, NORM+MONEY+CAP,
"execute <INPUT FILE>",                 0,	execute,0, VIS,
"explore <c|m> <SECT> <NUM> <PATH|DESTINATION>",1,expl,	C_MOD, NORM+MONEY+CAP,
"financial",                            0,	fina,	0, GOD,
"fire <land, ship or sect> <from-SECTS | SHIPS | UNITS> [TO-SECT | SHIP]",1,multifire,C_MOD, NORM+MONEY+CAP,
"flash <COUNTRY> [<message>]",          0,	flash,	0, NORM,
"fleetadd <FLEET> <SHIPS>",             0,	flee,	C_MOD, NORM,
"fly <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION> <COM>",2,fly,C_MOD, NORM+MONEY+CAP,
#ifdef	SAIL
"follow <leader> <SHIPS>",		1,	foll,	C_MOD, NORM+CAP,
#endif	/* SAIL */
"force <delay time>",  			0,	force,	C_MOD, GOD,
"fortify <UNITS> <MOB>",                1,	fort,	C_MOD, NORM,
"fuel <SHIPS|UNITS> <AMOUNT> [TENDER]",	1,	fuel,	C_MOD, NORM,
"give <COMM> <SECT> <NUM>",	        0,	give,	C_MOD, GOD,
"grind <SECT> <NUM>",			1,	grin,	C_MOD, NORM+MONEY+CAP,
"harden <PLANES> <NUM>",                2,	hard,	C_MOD, NORM+MONEY+CAP,
"headlines [days]",                     0,	head,	C_MOD, VIS,
"hidden <SECTS>",	                0,	hidd,	0, GOD,
"info <topic>",                         0,	info,	0, VIS,
"land <UNITS>",				0,	land,	C_MOD, NORM,
"launch <PLANES>",                      3,	laun,	C_MOD, NORM+MONEY+CAP,
"lcargo <UNITS>",                       0,	lcarg,	0, NORM,
"ledger <LOANS>",                       0,	ledg,	0, GOD,
"level <SECTS>",                        0,	leve,	0, NORM,
"list of commands",                     0,	explain,0, VIS,
"lbmap <SECTS|UNIT> [s|l|p|*]",                    0,	map,	0, NORM,
"lload <COMM|\"plane\"> <UNITS> <NUM|PLANES>",1,	lload,	C_MOD, NORM+CAP,
"llookout <UNITS>",                     1,	llook,	0, NORM+CAP,
"lmap <SECTS|UNIT> [s|l|p|*]",                    0,	map,	0, NORM,
"lmine <UNITS>",                        2,	landmine,C_MOD, NORM+MONEY+CAP,
"load <COMM|\"land\"|\"plane\"> <SHIPS> <NUM|UNITS|PLANES>",1,load,C_MOD, NORM+CAP,
"lookout <SHIPS>",                      1,	look,	0, NORM+CAP,
"lradar <UNITS | SECTS>",               1,	rada,	0, NORM+CAP,
"lrange <UNITS> <range>",		1,	lrange,	C_MOD, NORM+CAP,
"lretreat <UNITS|ARMY> <PATH> [i|h|b|c]", 1,	lretr,	C_MOD, NORM+CAP,
"ltend <COMM> <tender-SHIPS> <NUM> <UNITS>",1,	ltend,	C_MOD, NORM+CAP,
"lunload <COMM|\"plane\"> <UNITS> <NUM|PLANES>",1,lload,	C_MOD, NORM+CAP,
"market [COMM]",                        0,	mark,	0, GOD,
"map <SECTS|SHIP>",                     0,	map,	0, VIS,
"march <UNITS> <PATH|DESTINATION>",     1,	march,	C_MOD, NORM+CAP,
"mine <SHIPS>",                         2,	mine,	C_MOD, NORM+MONEY+CAP,
"mission <type> <PLANES|SHIPS|UNITS> <mission type> <op sect> [<radius>]", 2,mission,C_MOD, NORM+CAP,
"morale <UNITS> <retreat%>",		1,	morale,	C_MOD, NORM+CAP,
"motd",					0,	show_motd, C_MOD, NORM,
"move <c|m|s|g|p|i|o|b|f|r|u> <SECT> <NUM> <PATH|DESTINATION>",1,move,C_MOD, NORM+CAP,
#ifdef	SAIL
"mquota <SHIPS> <value>",		2,	mobq,	C_MOD, NORM+CAP,
#endif	/* SAIL */
"mult [COUNTRY]",                       1,	mult,	C_MOD, NORM,
#ifdef	SHIPNAMES
"name <SHIPS> <NAME>",			0,	name,	C_MOD, NORM,
#endif	/* SHIPNAMES */
"nation",                               0,	nati,	0, VIS,
"navigate <SHIPS> <PATH|DESTINATION>",  1,	navi,	C_MOD, NORM+CAP,
"newcap <NAT> [<SECTOR>]",              0,	new,	C_MOD, GOD,
"neweff <SECTS>",                       0,	newe,	C_MOD, NORM,
"newspaper [days]",                     0,	news,	0, VIS,
"nuke <SECTS>",                         0,	nuke,	0, NORM,
"offer <loan|treaty> <NAT> [<NUM> <DAYS> <IRATE>]",1,offe,C_MOD, GOD,
"offset <SECT|NAT>",                    0,	offs,	C_MOD, GOD,
"order <SHIPS> <c|s|r|d|l> ",		1,	orde,	C_MOD, NORM+CAP, 
"origin <SECT>",                        1,	orig,	C_MOD, NORM,
"paradrop <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>",3,para,C_MOD, NORM+MONEY+CAP,
"path <SECT>",                          0,	path,	0, NORM,
#ifdef TRADESHIPS
"payoff <SHIPS>",                       0,	payo,	C_MOD, NORM,
#endif /* TRADESHIPS */
"pbmap <SECTS|UNIT> [s|l|p|*]",                    0,	map,	0, NORM,
"plane <SECTS>",                        0,	plan,	0, NORM,
"players",                              0,      play,   0, NORM,
"pmap <SECTS|UNIT> [s|l|p|*]",                    0,	map,	0, NORM,
"power [[\"new\" [<NUMBER OF COUNTRIES>]] | [\"country\" <COUNTRY NUMBER>]]",                      0,	powe,	C_MOD, VIS,
"pray",                                 0,      tele,   C_MOD, NORM,
"production <SECTS>",                   0,	prod,	0, NORM,
"qorder <SHIPS>",			0,	qorde,	C_MOD, NORM+CAP,
"quit",                                 0,	quit,	0, VIS,
"radar <SHIPS | SECTS>",                1,	rada,	0, NORM+CAP,
"range <PLANES> <range>",		1,	range,	C_MOD, NORM+CAP,
"read",                                 0,	rea,	C_MOD, VIS,
"realm <number> [<SECTS>]",             0,	real,	C_MOD, NORM,
"recon <spy-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>",3,reco,C_MOD, NORM+MONEY+CAP,
"retreat <SHIPS|FLEET> <PATH> [i|t|s|h|b|d|c]", 1,retr,	C_MOD, NORM+CAP,
"relations  [as-COUNTRY]",		0,	rela,	0, VIS,
"reject <reject|accept> <announcements|mail|treaties|loans> <NAT>",2,reje,C_MOD, NORM,
"repay <LOAN> <NUM>",                   1,	repa,	C_MOD, GOD,
"report <NATS>",                        0,	repo,	0, VIS,
"resource <SECTS>",                     0,	reso,	0, NORM,
"route <COMM> <SECTS>",                 1,	rout,	0, NORM,
#ifdef	SAIL
"sail <SHIPS> <PATH>",			1,	sail,	C_MOD, NORM+CAP,
#endif	/* SAIL */
"satellite <PLANE> [<se|sh|l> [?cond&cond&...]]",1,	sate,	0, NORM+MONEY+CAP,
"sbmap <SECTS|UNIT> [s|l|p|*]",                    0,	map,	0, NORM,
"scrap <s|p|l> <SHIPS|PLANES|UNITS>",   2,	scra,	C_MOD, NORM+MONEY+CAP,
"scuttle <s|p|l> <SHIPS|PLANES|UNITS>",	5,	scut,	C_MOD, NORM+CAP,
"sect <SECTS>",                         0,	sct,	0, NORM,
"sell <COMM> <SECTS> <NUM> <NUM>",      1,	sell,	C_MOD, GOD,
"set <TYPE> <LIST> <PRICE>",            1,	set,	C_MOD, GOD,
"setsector <TYPE> <SECTS> <NUM>",	0,	setsector,C_MOD, GOD,
"setresource <TYPE> <SECTS> <NUM>",	0,	setres,	C_MOD, GOD,
"sharebmap <CNUM/CNAME> <SECTS> [<des>]", 0, shar, C_MOD, NORM,
"ship <SHIPS>",                         0,	shi,	0, NORM,
"shoot <c|u> <SECTS> <NUMBER>",         3,	shoo,	C_MOD, NORM+MONEY+CAP,
"show <TYPE> <\"build\"|\"stats\"|\"cap\">",	0,show,	0, VIS,
"shutdown [<minutes>] <disable update?>",                 0,	shut,	0, GOD,
"skywatch <SECTS>",                     1,	skyw,	C_MOD, NORM+CAP,
"smap <SECTS|UNIT> [s|l|p|*]",                    0,	map,	0, NORM,
"sonar <SHIPS> <brief?>",	        1,	sona,	C_MOD, NORM+CAP,
"sorder <SHIPS>",			0,	sorde,	C_MOD, NORM+CAP, 
"spy <SECTS>",				1,	spy,	C_MOD, NORM+CAP,
"start <SECTS>", 			1,	start,	C_MOD, NORM+CAP,
"starvation [<SECTS>|l <UNITS>|s <SHIPS>]",  0,	starve,	0, NORM,
"stop <SECTS>", 			1,	stop,	C_MOD, NORM+CAP,
"strength <SECTS>", 			1,	stre,	C_MOD, NORM,
"supply <LAND UNITS>",                  1,	supp,	C_MOD, NORM+CAP,
"survey <COMM|VAR> <SECTS>",            0,	surv,	0, NORM+CAP,
"sync [version|sum|read|define|object <type> <which>|class <type> <which>", 0, sync, 0, VIS,
"swapsector <SECT> <SECT>", 		0,	swaps,	C_MOD, GOD,
"sweep <sweep-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>",3,reco,C_MOD, NORM+MONEY+CAP,
"telegram <NAT>",                       0,	tele,	C_MOD, NORM,
"tend <COMM|\"land\"> <tender-SHIPS> <NUM|UNIT> <dest-SHIPS>",1,tend,	C_MOD, NORM+CAP,
"territory <SECTS> <NUMBER>",		0,	terr,	C_MOD, NORM,
"test <c|m|s|g|p|i|o|b|f|r|u> <SECT> <NUM> <PATH|DESTINATION>",1,move,0, NORM+CAP,
"threshold <COMM> <SECTS> <THRESH>",    1,	thre,	C_MOD, NORM,
"toggle [inform|flash|beep|coastwatch|sonar|sync|async] [on|off]",          0,      togg,   C_MOD, VIS,
"torpedo <submarine-SHIPS> <target-SHIP>",3,	torp,	C_MOD, NORM+MONEY+CAP,
"trade",                                1,	trad,	C_MOD, GOD,
"transport <\"nuke\"|\"plane\"> <SECT|PLANES> [<NUKETYPE> <number>] <PATH|DESTINATION>",1,tran,C_MOD, NORM+CAP,
"treaty <TREATIES>",                    0,	trea,	0, NORM+MONEY+CAP,
"turn <\"on\"|\"off\"|\"mess\">",       0,	turn,	C_MOD, GOD,
"unload <COMM|\"land\"|\"plane\"> <SHIPS> <NUM|UNIT|PLANE>",1,load,C_MOD, NORM+CAP,
#ifdef	SAIL
"unsail <SHIPS>",			1,	sail,	C_MOD, NORM+CAP,
#endif	/* SAIL */
"update",                               0,	upda,	0, VIS,
"upgrade <SHIPS>",                      1,	upgr,	C_MOD, NORM+MONEY+CAP,
"version",                              0,	vers,	0, VIS,
"wait",                                 0,	wai,	C_MOD, GOD,
"wall [<message>]",                     0,	wall,	C_MOD, NORM,
"wingadd <WING> <PLANES>",              1,	wing,	C_MOD, NORM,
"wipe <SECTS>",				1,	wipe,	C_MOD, NORM,
"wire [yes|no|<days>]",                 0,	rea,	C_MOD, VIS,
"work <LAND UNITS> <AMOUNT>",		1,	work,	C_MOD, NORM+MONEY+CAP,
#ifdef	DEMANDUPDATE
"zdone <y|n|c>",			0,	zdon,	C_MOD, NORM,
#endif	/* DEMANDUPDATE */
0,					0,	0,	0,	0,
};
