/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2018, 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:
* Steve McClure, 2000
- * Markus Armbruster, 2004-2011
+ * Markus Armbruster, 2004-2016
*/
#include <config.h>
int i;
char cntryname[sizeof(natp->nat_cnam)];
char pname[sizeof(natp->nat_pnam)];
- natid coun;
natid freecn;
char prompt[128];
char buf[1024];
if (!p || !*p)
return RET_SYN;
i = atoi(p);
- if (i >= MAXNOC) {
- pr("Max # countries is %d\n", MAXNOC);
+ if (i == 0) {
+ pr("Not allowed to add country #0\n");
return RET_FAIL;
}
- coun = i;
- if (coun == 0) {
- pr("Not allowed to add country #0\n");
+ natp = getnatp(i);
+ if (!natp) {
+ pr("Can't add country #%d\n", i);
return RET_FAIL;
}
- natp = getnatp(coun);
p = getstarg(player->argp[2], "Country name? ", buf);
if (!p)
return RET_SYN;
- if (!check_nat_name(p, coun))
+ if (!check_nat_name(p, natp->nat_cnum))
return RET_FAIL;
strcpy(cntryname, p);
p = getstarg(player->argp[3], "Representative? ", buf);
}
strcpy(pname, p);
p = getstarg(player->argp[4],
- "Status? (visitor, new, god, delete) ", buf);
+ "Status? (visitor, player, god, delete) ", buf);
if (!p || !*p)
return RET_SYN;
switch (*p) {
case 'v':
stat = STAT_VIS;
break;
- case 'n':
+ case 'p':
stat = STAT_NEW;
break;
case 'g':
pr("Illegal status\n");
return RET_SYN;
}
- strcpy(natp->nat_cnam, cntryname);
- strcpy(natp->nat_pnam, pname);
- if (stat == STAT_NEW || stat == STAT_VIS)
- nat_reset(natp, stat, 0, 0);
- else {
- natp->nat_stat = stat;
- pr("No special initializations done...\n");
+ if (stat == STAT_UNUSED
+ ? natp->nat_stat >= STAT_SANCT : natp->nat_stat != STAT_UNUSED) {
+ pr("Country %s status is %s.\n"
+ "%s it in this state is normally a bad idea.",
+ prnat(natp), symbol_by_value(natp->nat_stat, nation_status),
+ stat == STAT_UNUSED ? "Deleting" : "Replacing");
+ if (!askyn("Are you sure? "))
+ return RET_FAIL;
}
- putnat(natp);
- return 0;
+ if (getplayer(natp->nat_cnum)) {
+ pr("%s is logged in!\n", prnat(natp));
+ return RET_FAIL;
+ }
+
+ nat_reset(natp->nat_cnum, cntryname, pname, stat);
+ return RET_OK;
}