/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2012, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure, Markus Armbruster
*
* Empire is free software: you can redistribute it and/or modify
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);
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 (#%d) status is %s.\n"
+ "%s it in this state is normally a bad idea.",
+ natp->nat_cnam, natp->nat_cnum,
+ symbol_by_value(natp->nat_stat, nation_status),
+ stat == STAT_UNUSED ? "Deleting" : "Replacing");
+ if (!askyn("Are you sure? "))
+ return RET_FAIL;
+ }
+ if (getplayer(natp->nat_cnum)) {
+ pr("%s (#%d) is logged in!\n",
+ natp->nat_cnam, natp->nat_cnum);
+ return RET_FAIL;
}
+ nat_reset(natp, natp->nat_cnum, cntryname, pname, stat);
putnat(natp);
return 0;
}