]> git.pond.sub.org Git - empserver/blobdiff - src/lib/player/empmod.c
tests: New test-suite-only command __cmd
[empserver] / src / lib / player / empmod.c
index 6233dbffdcb683eda2e0174b6d4578af61b7f0e0..c89896cd3449376e2d569462638c9fa274842dfd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2014, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                Ken Stevens, Steve McClure, Markus Armbruster
  *
  *  Empire is free software: you can redistribute it and/or modify
  *     Thomas Ruschak, 1992
  *     Ken Stevens, 1995
  *     Steve McClure, 1996-2000
- *     Markus Armbruster, 2004-2012
+ *     Markus Armbruster, 2004-2014
+ */
+
+/*
+ * Fun fact: 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.
  */
 
 #include <config.h>
 #include "com.h"
 #include "player.h"
 #include "prototypes.h"
+#include "testing.h"
 
 struct cmndstr player_coms[] = {
 /*  command form                       cost    addr    permit */
     {"accept  [as-COUNTRY]", 0, acce, C_MOD, NORM},
     {"add <NAT> <NAME> <REP> <STATUS>", 0, add, C_MOD, GOD},
     {"announce", 0, tele, C_MOD, 0},
-    {"anti <SECT>", 3, anti, C_MOD, NORM + MONEY + CAP},
+    {"anti <SECTS>", 3, anti, C_MOD, NORM + MONEY + CAP},
     {"apropos <topic>", 0, apro, 0, 0},
-    {"arm <PLANE> <NUKE> <airburst?>", 3, arm, C_MOD, NORM + MONEY + CAP},
+    {"arm <PLANE> <NUKE> <airburst?>", 3, arm, C_MOD, NORM + 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},
@@ -66,7 +73,7 @@ struct cmndstr player_coms[] = {
     {"build <s|l|b|p|n|t> <SECTS> <type|dir> [<number> <tech> <sure?>]",
      1, buil, C_MOD, NORM + MONEY + CAP},
     {"buy <COMM> <LOT#> <BID/UNIT> <DEST>",
-     1, buy, C_MOD, CAP + NORM + MONEY},
+     1, buy, C_MOD, NORM + MONEY + CAP},
     {"bye", 0, quit, 0, 0},
     {"capital <SECT>", 0, capi, C_MOD, NORM},
     {"cargo <SHIPS>", 0, carg, 0, NORM},
@@ -77,9 +84,9 @@ struct cmndstr player_coms[] = {
     {"commodity <SECTS>", 0, comm, 0, NONVIS},
     {"consider <loan|treaty> <LOAN/TREATY> <acc|decl|post>",
      1, cons, C_MOD, NORM + CAP},
-    {"convert <SECTS> <NUM> [sure?]", 2, conv, C_MOD, NORM + MONEY + CAP},
+    {"convert <SECTS> <NUM>", 2, conv, C_MOD, NORM + MONEY + CAP},
     {"country <NATS>", 0, coun, 0, 0},
-    {"cutoff <SECTS>", 0, cuto, C_MOD, NORM},
+    {"cutoff <SECTS>", 0, cuto, 0, 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},
@@ -87,13 +94,13 @@ struct cmndstr player_coms[] = {
      NORM + MONEY + CAP},
     {"designate <SECTS> <type>", 1, desi, C_MOD, NORM},
     {"disable", 0, disa, C_MOD, GOD},
-    {"disarm <PLANE>", 2, disarm, C_MOD, NORM + MONEY + CAP},
+    {"disarm <PLANE>", 2, disarm, C_MOD, NORM + CAP},
     {"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> [<fields>]", 0, dump, 0, NORM},
     {"echo [<string>]", 0, echo, 0, 0},
-    {"edit <country|land|ship|plane|unit> <NAT|SECT|SHIP|PLANE|LAND> [<KEY> <VALUE>]...",
+    {"edit <l|s|p|u|n|c> <SECTS|SHIPS|PLANES|LANDS|NUKES|NATS> [<KEY> <VALUE>]...",
      0, edit, C_MOD, GOD},
     {"enable", 0, enab, C_MOD, GOD},
     {"enlist <SECTS> <NUM>", 2, enli, C_MOD, NORM + MONEY + CAP},
@@ -109,16 +116,16 @@ struct cmndstr player_coms[] = {
      2, fly, C_MOD, NORM + MONEY + CAP},
     {"follow <leader> <SHIPS>", 1, foll, C_MOD, NORM + CAP},
     {"force", 0, force, C_MOD, GOD},
-    {"fortify <UNITS> <MOB>", 1, fort, C_MOD, NORM},
-    {"give <COMM> <SECT> <NUM>", 0, give, C_MOD, GOD},
-    {"grind <SECT> <NUM>", 1, grin, C_MOD, NORM + MONEY + CAP},
+    {"fortify <UNITS> <MOB>", 1, fort, C_MOD, NORM + CAP},
+    {"give <COMM> <SECTS> <NUM>", 0, give, C_MOD, GOD},
+    {"grind <SECTS> <NUM>", 1, grin, C_MOD, NORM + MONEY + CAP},
     {"harden <PLANES> <NUM>", 2, hard, C_MOD, NORM + MONEY + CAP},
-    {"headlines [days]", 0, head, C_MOD, 0},
+    {"headlines [days]", 0, head, 0, 0},
     {"help <topic>", 0, info, 0, 0},
     {"improve <road|rail|defense> <SECTS> <NUM>",
      1, improve, C_MOD, NORM + MONEY + CAP},
     {"info <topic>", 0, info, 0, 0},
-    {"land <UNITS>", 0, land, C_MOD, NORM},
+    {"land <UNITS>", 0, land, 0, NORM},
     {"launch <PLANES> <SECT|SHIP>", 3, laun, C_MOD, NORM + MONEY + CAP},
     {"lbmap <SECTS|LAND UNIT> [s|l|n|p|r|t|*|h]", 0, map, C_MOD, NORM},
     {"lboard <to-LAND> [<from-sector>]",
@@ -140,7 +147,7 @@ struct cmndstr player_coms[] = {
     {"lradar <UNITS | SECTS>", 1, lrad, C_MOD, NORM + CAP},
     {"lretreat <UNITS|ARMY> <PATH> [i|h|b|c]",
      1, lretr, C_MOD, NORM + CAP},
-    {"lstat <UNITS>", 0, lsta, C_MOD, NORM},
+    {"lstat <UNITS>", 0, lsta, 0, NORM},
     {"ltend <COMM> <tender-SHIPS> <NUM> <UNITS>",
      1, ltend, C_MOD, NORM + CAP},
     {"lunload <COMM|\"land\"|\"plane\"> <UNITS> <NUM|UNITS|PLANES>",
@@ -152,7 +159,7 @@ struct cmndstr player_coms[] = {
     {"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, 0},
+    {"motd", 0, show_motd, 0, 0},
     {"move <COMM> <SECT> <NUM> <PATH|DESTINATION>",
      1, move, C_MOD, NORM + CAP},
     {"mquota <SHIPS> <value>", 2, mobq, C_MOD, NORM + CAP},
@@ -160,20 +167,20 @@ struct cmndstr player_coms[] = {
     {"nation [as-COUNTRY]", 0, nati, 0, 0},
     {"navigate <SHIPS> <PATH|DESTINATION>", 1, navi, C_MOD, NORM + CAP},
     {"nbmap <SECTS|NUKE> [s|l|n|p|r|t|*|h]", 0, map, C_MOD, NORM},
-    {"ndump <SECTS>", 0, ndump, 0, NORM},
+    {"ndump <NUKES>", 0, ndump, 0, NORM},
     {"newcap <NAT> <SECTOR>", 0, new, C_MOD, GOD},
-    {"neweff <SECTS>", 0, newe, C_MOD, NORM},
+    {"neweff <SECTS>", 0, newe, 0, NORM},
     {"newspaper [days]", 0, news, 0, 0},
     {"nmap <SECTS|NUKE> [s|l|n|p|*|h]", 0, map, C_MOD, NORM},
-    {"nuke <SECTS>", 0, nuke, 0, NORM},
+    {"nuke <NUKES>", 0, nuke, 0, NORM},
     {"offer <loan|treaty> <NAT> [<NUM> <DAYS> <IRATE>]",
      1, offe, C_MOD, NORM + MONEY + CAP},
-    {"order <SHIPS> <c|s|r|d|l> ", 1, orde, C_MOD, NORM + CAP},
+    {"order <SHIPS> <c|s|r|d|l>", 1, orde, C_MOD, NORM + CAP},
     {"origin <SECT|COUNTRY|~>", 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, C_MOD, NORM},
-    {"payoff <SHIPS>", 0, payo, C_MOD, NORM},
+    {"payoff <SHIPS>", 0, payo, 0, NORM},
     {"pbmap <SECTS|PLANE> [s|l|n|p|r|t|*|h]", 0, map, C_MOD, NORM},
     {"pboard <PLANES>", 3, pboa, C_MOD, NORM + MONEY + CAP},
     {"pdump <PLANES> [<fields>]", 0, pdump, 0, NORM},
@@ -186,7 +193,7 @@ struct cmndstr player_coms[] = {
     {"pray", 0, tele, C_MOD, NORM},
     {"production <SECTS>", 0, prod, 0, NORM},
     {"pstat <PLANES>", 0, pstat, 0, NORM},
-    {"qorder <SHIPS>", 0, qorde, C_MOD, NORM + CAP},
+    {"qorder <SHIPS>", 0, qorde, 0, NORM},
     {"quit", 0, quit, 0, 0},
     {"radar <SHIPS | SECTS>", 1, rada, C_MOD, NORM + CAP},
     {"range <PLANES> <range>", 1, range, C_MOD, NORM + CAP},
@@ -208,7 +215,7 @@ struct cmndstr player_coms[] = {
     {"sabotage <UNITS>", 1, sabo, C_MOD, NORM + MONEY + CAP},
     {"sail <SHIPS> <PATH>", 1, sail, C_MOD, NORM + CAP},
     {"satellite <PLANE> [<se|sh|l> [?cond&cond&...]]",
-     1, sate, C_MOD, NORM + MONEY + CAP},
+     1, sate, C_MOD, NORM + CAP},
     {"sbmap <SECTS|SHIP> [s|l|n|p|r|t|*|h]", 0, map, C_MOD, NORM},
     {"scrap <s|p|l> <SHIPS|PLANES|UNITS>",
      2, scra, C_MOD, NORM + MONEY + CAP},
@@ -233,15 +240,16 @@ struct cmndstr player_coms[] = {
     {"skywatch <SECTS>", 1, skyw, C_MOD, NORM + CAP},
     {"smap <SECTS|SHIP> [s|l|n|p|*|h]", 0, map, C_MOD, NORM},
     {"sonar <SHIPS> <brief?>", 1, sona, C_MOD, NORM + CAP},
-    {"sorder <SHIPS>", 0, sorde, C_MOD, NORM + CAP},
+    {"sorder <SHIPS>", 0, sorde, 0, NORM},
     {"spy <SECTS>", 1, spy, C_MOD, NORM + CAP},
     {"sstat <SHIPS>", 0, sstat, 0, NORM},
-    {"start <TYPE> <SECTS|PLANES|SHIPS|UNITS>", 1, start, C_MOD, NORM + CAP},
+    {"start <TYPE> <SECTS|PLANES|SHIPS|UNITS|NUKES>", 1, start, C_MOD, NORM},
     {"starvation [<SECTS>|l <UNITS>|s <SHIPS>]", 0, starve, 0, NORM},
-    {"stop <TYPE> <SECTS|PLANES|SHIPS|UNITS>", 1, stop, C_MOD, NORM + CAP},
+    {"stockpile <STOCKPILE> <NUKES>", 0, stoc, C_MOD, NORM},
+    {"stop <TYPE> <SECTS|PLANES|SHIPS|UNITS|NUKES>", 1, stop, C_MOD, NORM},
     {"strength <SECTS>", 1, stre, C_MOD, NORM},
     {"supply <LAND UNITS>", 1, supp, C_MOD, NORM + CAP},
-    {"survey <SELECTOR> <SECTS>", 0, surv, C_MOD, NORM + CAP},
+    {"survey <SELECTOR> <SECTS>", 0, surv, C_MOD, NORM},
     {"swapsector <SECT> <SECT>", 0, swaps, C_MOD, GOD},
     {"sweep <sweep-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION>",
      3, reco, C_MOD, NORM + MONEY + CAP},
@@ -250,13 +258,13 @@ struct cmndstr player_coms[] = {
      1, tend, C_MOD, NORM + CAP},
     {"territory <SECTS> <NUMBER> [<FIELD>]", 0, terr, C_MOD, NORM},
     {"test <COMM> <SECT> <NUM> <PATH|DESTINATION>",
-     1, move, C_MOD, NORM + CAP},
+     1, move, C_MOD, NORM},
     {"threshold <COMM> <SECTS> <THRESH>", 1, thre, C_MOD, NORM},
     {"toggle [inform|flash|beep|coastwatch|sonar|techlists] [on|off]",
      0, togg, C_MOD, 0},
     {"torpedo <submarine-SHIPS> <target-SHIP>",
      3, torp, C_MOD, NORM + MONEY + CAP},
-    {"trade", 1, trad, C_MOD, NORM + CAP + MONEY},
+    {"trade", 1, trad, C_MOD, NORM + MONEY + CAP},
     {"transport <\"nuke\"|\"plane\"> <NUKES|PLANES> <PATH|DESTINATION>",
      1, tran, C_MOD, NORM + CAP},
     {"treaty <TREATIES>", 0, trea, 0, NORM + MONEY + CAP},
@@ -268,12 +276,13 @@ struct cmndstr player_coms[] = {
     {"upgrade <s|p|l> <SHIPS|PLANES|UNITS>",
      1, upgr, C_MOD, NORM + MONEY + CAP},
     {"version", 0, vers, 0, 0},
-    {"wall [<message>]", 0, wall, C_MOD, NORM},
-    {"wingadd <WING> <PLANES>", 1, wing, C_MOD, NORM},
+    {"wall [<message>]", 0, wall, 0, NORM},
+    {"wingadd <WING> <PLANES>", 0, wing, C_MOD, NORM},
     {"wipe <SECTS>", 1, wipe, C_MOD, NORM},
     {"wire [yes|no|<days>]", 0, rea, C_MOD, 0},
     {"work <LAND UNITS> <AMOUNT>", 1, work, C_MOD, NORM + MONEY + CAP},
     {"xdump [\"meta\"] <TYPE> [<RECORDS>]", 0, xdump, 0, 0},
     {"zdone <y|n|c>", 0, zdon, C_MOD, NORM},
+    {"__cmd \"added\" <NUM> <NUM> <NUM>", 0, testing_cmd, 0, TESTING},
     {NULL, 0, NULL, 0, 0}
 };