int sstat(void);
int start(void);
int starve(void);
+int stoc(void);
int stop(void);
int stre(void);
int supp(void);
--- /dev/null
+.TH Command STOCKPILE
+.NA stockpile "Designate members of a \*Qstockpile\*U"
+.LV Expert
+.SY "stockpile <STOCKPILE> <NUKE/STOCKPILE>"
+The stockpile command is used to specify the stockpile groupings
+of your nukes.
+.s1
+.EX stockpile <STOCKPILE> <NUKE/STOCKPILE>
+In the syntax <STOCKPILE> is the alphabetic character to be used as the
+stockpile designation.
+This character can be chosen from the set of
+upper or lower case a-z and tilde (~).
+The pseudo-stockpile specification tilde
+specifies all nukes not currently in any stockpile.
+.s1
+The specification of nukes, <NUKE/STOCKPILE>,
+can have one of several syntaxes:
+.NF
+example meaning
+------- -------
+23 nuke 23
+2/14/23 nukes 2, 14, and 23
+c all nukes currently in stockpile `c'
+~ all nukes currently in the \*Qnull\*U stockpile
+2,3 all nukes in sector 2,3
+-1:3,0:2 all nukes in the square area bounded by -1,0 & 3,2
+.FI
+All stockpiles, (with the exception of the `~' stockpile),
+are limited to some maximum size
+and you will be informed how many nukes can be added
+when this command is run.
+.s1
+Having nukes organized into stockpiles can be very helpful in
+loading, moving, etc.,
+in that fewer commands are required to perform these commands
+on groups of nukes if they can be specified by stockpile number.
+.s1
+Note that you can remove nukes from a stockpile by adding them to
+the `~' stockpile. e.g.
+.EX stockpile ~ A
+This command would purge all nukes from stockpile `A'.
+.s1
+.SA "nuke, transport, Nukes"
--- /dev/null
+/*
+ * Empire - A multi-player, client/server Internet based war game.
+ * Copyright (C) 1986-2013, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Ken Stevens, Steve McClure, Markus Armbruster
+ *
+ * Empire is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ---
+ *
+ * See files README, COPYING and CREDITS in the root of the source
+ * tree for related information and legal notices. It is expected
+ * that future projects/authors will amend these files as needed.
+ *
+ * ---
+ *
+ * stoc.c: Add nukes to a stockpile
+ *
+ * Known contributors to this file:
+ * Markus Armbruster, 2013
+ */
+
+#include <config.h>
+
+#include <ctype.h>
+#include "commands.h"
+#include "nuke.h"
+
+int
+stoc(void)
+{
+ struct nukstr nuke;
+ int count;
+ char *cp;
+ char c;
+ struct nstr_item nstr;
+ char buf[1024];
+
+ cp = getstarg(player->argp[1], "stockpile? ", buf);
+ if (!cp)
+ return RET_SYN;
+ c = *cp;
+ if (!isalpha(c) && c != '~') {
+ pr("Specify stockpile, (1 alpha char or '~')\n");
+ return RET_SYN;
+ }
+ if (c == '~')
+ c = 0;
+ if (!snxtitem(&nstr, EF_NUKE, player->argp[2], NULL))
+ return RET_SYN;
+ count = 0;
+ while (nxtitem(&nstr, &nuke)) {
+ if (!player->owner)
+ continue;
+ if (nuke.nuk_stockpile == c)
+ continue;
+ nuke.nuk_stockpile = c;
+ putnuke(nuke.nuk_uid, &nuke);
+ count++;
+ }
+ pr("%d nuke%s added to stockpile `%1.1s'\n", count, splur(count), &c);
+ return RET_OK;
+}
{"sstat <SHIPS>", 0, sstat, 0, NORM},
{"start <TYPE> <SECTS|PLANES|SHIPS|UNITS|NUKES>", 1, start, C_MOD, NORM},
{"starvation [<SECTS>|l <UNITS>|s <SHIPS>]", 0, starve, 0, NORM},
+ {"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},