/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2012, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2021, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure, Markus Armbruster
*
* Empire is free software: you can redistribute it and/or modify
* Known contributors to this file:
* Dave Pare, 1986
* Steve McClure, 2000
+ * Markus Armbruster, 2013
*/
#include <config.h>
int
capi(void)
{
+ char buf[1024];
+ char *p;
+ coord x, y;
struct sctstr sect;
struct natstr *np;
- struct nstr_sect nstr;
- int found;
- if (!snxtsct(&nstr, player->argp[1]))
+ if (!(p = getstarg(player->argp[1], "Sector? ", buf)) ||
+ !sarg_xy(p, &x, &y) || !getsect(x, y, §))
return RET_SYN;
- np = getnatp(player->cnum);
- found = 0;
- while (!found && nxtsct(&nstr, §)) {
- if (player->owner && (sect.sct_type == SCT_CAPIT ||
- sect.sct_type == SCT_MOUNT))
- found++;
- }
- if (!found)
+ if (!player->owner
+ || (sect.sct_type != SCT_CAPIT && sect.sct_type != SCT_MOUNT)) {
+ pr("%s is not a %s or %s owned by you.\n",
+ xyas(sect.sct_x, sect.sct_y, player->cnum),
+ dchr[SCT_CAPIT].d_name, dchr[SCT_MOUNT].d_name);
return RET_FAIL;
+ }
+ np = getnatp(player->cnum);
if (!(np->nat_flags & NF_SACKED) &&
sect.sct_x == np->nat_xcap && sect.sct_y == np->nat_ycap) {
pr("%s is already your capital.\n",