/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2010, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure
*
* This program is free software; you can redistribute it and/or modify
*
* ---
*
- * See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the
- * related information and legal notices. It is expected that any future
- * projects/authors will amend these files as needed.
+ * 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.
*
* ---
*
* chan.c: Change country/representative name
- *
+ *
* Known contributors to this file:
* Steve McClure, 2000
- *
*/
-#include <ctype.h>
-#include "misc.h"
-#include "player.h"
-#include "nat.h"
-#include "deity.h"
-#include "file.h"
+#include <config.h>
+
+#include "commands.h"
#include "news.h"
#include "optlist.h"
-#include "commands.h"
int
chan(void)
{
- s_char *temp;
- struct natstr *natp;
- register s_char *p;
- natid cn;
- int charge;
- int nonb;
- int btucost;
- s_char buf[1024];
- struct natstr *us;
+ char *p;
+ int charge;
+ int btucost;
+ char buf[1024];
+ struct natstr *us;
- if ((p = getstarg(player->argp[1], "country name or representative? ", buf)) == 0)
- return RET_SYN;
- us = getnatp(player->cnum);
- if (us->nat_stat == VIS) {
- pr("Visitor countries can't change their country name or representative.\n");
- return RET_FAIL;
- }
- switch (*p) {
- case 'n':
- case 'c':
- charge = 0;
- btucost = 0;
- if (!player->god && (us->nat_stat & STAT_NORM)) {
- if (us->nat_btu < 254) {
- pr("You need 254 btus to change your country name!\n");
- return RET_FAIL;
- }
- if (opt_BLITZ == 0) {
- pr("This command costs 254 BTU's and 10%% of your money.\n");
- if (!confirm("Are you sure you want to do this? "))
- return RET_FAIL;
- btucost = 254;
- /* charge = 2000; */
- /*if (us->nat_money < charge*10)*/
- /* charge = us->nat_money / 10;*/
- if (us->nat_money <= 0)
- charge = 0;
- else
- charge = us->nat_money / 10;
- }
+ p = getstarg(player->argp[1], "country name or representative? ", buf);
+ if (!p)
+ return RET_SYN;
+ us = getnatp(player->cnum);
+ if (us->nat_stat == STAT_VIS) {
+ pr("Visitor countries can't change their country name or representative.\n");
+ return RET_FAIL;
+ }
+ switch (*p) {
+ case 'n':
+ case 'c':
+ charge = 0;
+ btucost = 0;
+ if (us->nat_stat == STAT_ACTIVE) {
+ if (opt_BLITZ == 0) {
+ if (us->nat_btu < 254) {
+ pr("You need 254 btus to change your country name!\n");
+ return RET_FAIL;
}
- if ((p = getstarg(player->argp[2], "New country name -- ", buf)) == 0)
- return RET_SYN;
- p[sizeof(us->nat_cnam)-1] = 0;
- for (cn = 0; NULL != (natp = getnatp(cn)); cn++) {
- if (same(p, natp->nat_cnam)) {
- pr("Country #%d is already called `%s'!\n",
- cn, p);
- return RET_FAIL;
- }
- }
- nonb = 0;
- for (temp = p; *temp != '\0'; temp++) {
- if (iscntrl(*temp)) {
- pr("No control characters allowed in country names!\n");
- return RET_FAIL;
- } else if (*temp != ' ')
- nonb = 1;
- }
- if (!nonb) {
- pr("Must have a non-blank name!\n");
- return RET_FAIL;
- }
- if (opt_BLITZ == 0) {
- player->dolcost += charge;
- player->btused += btucost;
- }
- strcpy(us->nat_cnam, p);
- putnat(us);
- nreport(player->cnum, N_NAME_CHNG, 0, 1);
- break;
- case 'p':
- case 'r':
- pr("(note: these are stored in plain text.)\n");
- if ((p = getstarg(player->argp[2],
- "New representative name -- ", buf)) == 0)
- return RET_SYN;
- p[8] = 0;
- strcpy(us->nat_pnam, p);
- putnat(us);
- break;
- default:
- pr("Only \"country\" or \"representative\" can change.\n");
- return RET_SYN;
+ pr("This command costs 254 BTU's and 10%% of your money.\n");
+ if (!confirm("Are you sure you want to do this? "))
+ return RET_FAIL;
+ btucost = 254;
+ if (us->nat_money <= 0)
+ charge = 0;
+ else
+ charge = us->nat_money / 10;
+ }
}
- return RET_OK;
+ p = getstarg(player->argp[2], "New country name -- ", buf);
+ if (!p)
+ return RET_SYN;
+ if (!check_nat_name(p))
+ return RET_FAIL;
+ player->dolcost += charge;
+ player->btused += btucost;
+ strcpy(us->nat_cnam, p);
+ putnat(us);
+ nreport(player->cnum, N_NAME_CHNG, 0, 1);
+ break;
+ case 'p':
+ case 'r':
+ pr("(note: these are stored in plain text.)\n");
+ p = getstarg(player->argp[2], "New representative name -- ", buf);
+ if (!p)
+ return RET_SYN;
+ p[sizeof(us->nat_pnam) - 1] = 0;
+ strcpy(us->nat_pnam, p);
+ putnat(us);
+ break;
+ default:
+ pr("Only \"country\" or \"representative\" can change.\n");
+ return RET_SYN;
+ }
+ return RET_OK;
}
-