/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2009, 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.
*
* ---
*
* coll.c: Collet on a loan
- *
+ *
* Known contributors to this file:
* Pat Loney, 1992
* Steve McClure, 1996-2000
*/
-#include <math.h>
-#include "misc.h"
-#include "player.h"
-#include "var.h"
-#include "file.h"
-#include "sect.h"
+#include <config.h>
+
+#include "commands.h"
#include "item.h"
#include "loan.h"
+#include "lost.h"
#include "news.h"
-#include "nat.h"
-#include "xy.h"
-#include "commands.h"
#include "optlist.h"
int
coll(void)
{
- register int arg;
- register int i;
- register int val;
+ int arg;
+ int i;
+ int val;
time_t now;
- s_char *p;
+ char *p;
struct lonstr loan;
struct sctstr sect;
coord x, y;
double owed;
double pay;
- s_char buf[1024];
+ char buf[1024];
if (!opt_LOANS) {
pr("Loans are not enabled.\n");
return RET_FAIL;
}
- if ((arg = onearg(player->argp[1], "Collect on loan #")) < 0)
+ if ((arg = onearg(player->argp[1], "Collect on loan # ")) < 0)
return RET_SYN;
/* Check if it's a valid loan. That means, is it a valid loan,
owed to this player, with a valid duration and it's been signed. */
xyas(x, y, player->cnum), cname(loan.l_lonee));
return RET_FAIL;
}
- pay = dchr[sect.sct_type].d_value * ((float)sect.sct_effic + 100.0);
+ pay = dchr[sect.sct_type].d_value * (sect.sct_effic + 100.0);
for (i = 0; ichr[i].i_name; i++) {
- if (ichr[i].i_value == 0 || ichr[i].i_vtype == 0)
+ if (ichr[i].i_value == 0 || ichr[i].i_uid == I_NONE)
continue;
- val = sect.sct_item[ichr[i].i_vtype];
+ val = sect.sct_item[ichr[i].i_uid];
pay += val * ichr[i].i_value;
}
pr("That sector (and its contents) is valued at $%.2f\n", pay);
pr("That is more than is owed!\n");
return RET_FAIL;
}
- if (sect.sct_type == SCT_CAPIT || sect.sct_type == SCT_MOUNT)
- caploss(§, sect.sct_own, "that was %s's capital!\n");
sect.sct_item[I_MILIT] = 1; /* FIXME now where did this guy come from? */
-/* Consider modifying takeover to take a "no che" argument and
- putting using it here again. */
-/* (void) takeover(§, player->cnum);*/
- makelost(EF_SECTOR, sect.sct_own, 0, sect.sct_x, sect.sct_y);
- makenotlost(EF_SECTOR, player->cnum, 0, sect.sct_x, sect.sct_y);
+ /*
+ * Used to call takeover() here a long time ago, but that does
+ * unwanted things, like generate che.
+ */
sect.sct_own = player->cnum;
memset(sect.sct_dist, 0, sizeof(sect.sct_dist));
sect.sct_dist_x = sect.sct_x;
sect.sct_dist_y = sect.sct_y;
+ if (sect.sct_type == SCT_CAPIT || sect.sct_type == SCT_MOUNT)
+ caploss(§, loan.l_lonee, "that was %s's capital!\n");
putsect(§);
nreport(player->cnum, N_SEIZE_SECT, loan.l_lonee, 1);
+ owed = loan_owed(&loan, time(&now));
if (pay >= owed) {
+ loan.l_status = LS_FREE;
loan.l_ldur = 0;
nreport(loan.l_lonee, N_REPAY_LOAN, player->cnum, 1);
wu(0, loan.l_lonee,