]> git.pond.sub.org Git - empserver/blobdiff - src/lib/commands/add.c
Update copyright notice
[empserver] / src / lib / commands / add.c
index 6bb4fdc6bf18576e4a15709e4a92ddd0d1ab6c6e..39fbf5e2b644445700aba0f575cfcf0e22aa18ec 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-2012, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                Ken Stevens, Steve McClure, Markus Armbruster
  *
  *  Empire is free software: you can redistribute it and/or modify
@@ -42,7 +42,6 @@ add(void)
     int i;
     char cntryname[sizeof(natp->nat_cnam)];
     char pname[sizeof(natp->nat_pnam)];
-    natid coun;
     natid freecn;
     char prompt[128];
     char buf[1024];
@@ -61,20 +60,19 @@ add(void)
     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);
@@ -110,14 +108,22 @@ add(void)
        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;
 }