(mult, player_coms): Command `mult' is disabled since 4.0.0 ('96), and

its code is obviously not in working order.  Remove.
(minmult, maxmult, configkeys): Unused configuration parameters,
remove.
(tradedesc): Remove code related to mult that had no effect.
(multread, commread, commwrite, commamt, commset, multset, commprice):
Dangerous, because code bypasses ef_read() & friends, remove.
(diss): Commodity cleanup uses the above, remove.  Command is disabled
and unlikely to work anyway.
This commit is contained in:
Markus Armbruster 2004-03-01 09:04:02 +00:00
parent 30cb9e2a83
commit 0c19d70c74
13 changed files with 4 additions and 356 deletions

View file

@ -42,7 +42,7 @@ OBJS = acce.o add.o anti.o arm.o army.o assa.o atta.o bdes.o best.o boar.o \
expl.o fina.o flash.o flee.o fly.o foll.o forc.o fort.o fuel.o give.o \
grin.o hard.o head.o hidd.o improve.o info.o land.o laun.o lboard.o \
ldump.o ledg.o leve.o load.o look.o lost.o lstat.o lten.o map.o \
marc.o mark.o mfir.o mine.o miss.o mobq.o mobu.o mora.o move.o mult.o \
marc.o mark.o mfir.o mine.o miss.o mobq.o mobu.o mora.o move.o \
name.o nati.o navi.o ndump.o new.o newe.o news.o nuke.o offe.o offs.o \
orde.o orig.o para.o path.o payo.o pboa.o pdump.o plan.o play.o \
powe.o prod.o pstat.o rada.o rang.o rea.o real.o reco.o reje.o rela.o \
@ -64,7 +64,7 @@ NTOBJS = acce.obj add.obj anti.obj arm.obj army.obj assa.obj atta.obj \
land.obj laun.obj lboard.obj ldump.obj ledg.obj leve.obj load.obj \
look.obj lost.obj lstat.obj lten.obj map.obj marc.obj mark.obj \
mfir.obj mine.obj miss.obj mobq.obj mobu.obj mora.obj move.obj \
mult.obj name.obj nati.obj navi.obj ndump.obj new.obj newe.obj \
name.obj nati.obj navi.obj ndump.obj new.obj newe.obj \
news.obj nuke.obj offe.obj offs.obj orde.obj orig.obj para.obj \
path.obj payo.obj pboa.obj pdump.obj plan.obj play.obj powe.obj \
prod.obj pstat.obj rada.obj rang.obj rea.obj real.obj reco.obj \

View file

@ -236,13 +236,6 @@ diss(void)
loan.l_status = LS_FREE;
putloan(ni.cur, &loan);
}
/* clean up commodity and trade for this nation. */
commread();
for (n = 1; n < I_MAX + 1; n++) {
val = commamt(player->cnum, n, &dummy);
commset(player->cnum, n, -val);
}
commwrite();
snxtitem_all(&ni, EF_TRADE);
while (nxtitem(&ni, (s_char *)&trade)) {
if (trade.trd_unitid >= 0 && trade.trd_owner == player->cnum) {

View file

@ -1,114 +0,0 @@
/*
* Empire - A multi-player, client/server Internet based war game.
* Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* ---
*
* 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.
*
* ---
*
* mult.c: Set per-nation list of price multipliers
*
* Known contributors to this file:
* Dave Pare, 1986
*/
#include "misc.h"
#include "player.h"
#include "var.h"
#include "nat.h"
#include "file.h"
#include "xy.h"
#include "nsc.h"
#include "commands.h"
#include "optlist.h"
#include <math.h> /* bailey@math-cs.kent.edu */
static void multsingle(natid us, natid them, struct natstr *natp);
int
mult(void)
{
struct nstr_item ni;
struct natstr nat;
int nats;
if (!opt_MARKET) {
pr("The market is disabled.\n");
return RET_FAIL;
}
pr("The mult command is no longer used.\n");
if (!snxtitem(&ni, EF_NATION, player->argp[1]))
return RET_SYN;
if (commread() < 0) {
pr("Unable to read commodity file; get help!\n");
return RET_SYS;
}
nats = 0;
while (!player->aborted && nxtitem(&ni, (s_char *)&nat)) {
if ((nat.nat_stat & STAT_NORM) == 0)
continue;
multsingle(player->cnum, (natid)ni.cur, &nat);
nats++;
}
pr("%d nation multipliers changed\n", nats);
return RET_OK;
}
/*
* Set the multipler for a single country.
*/
static void
multsingle(natid us, natid them, struct natstr *natp)
{
double price;
s_char *p;
s_char prompt[128];
s_char buf[1024];
sprintf(prompt, "%s (%7.3f) : ", natp->nat_cnam, multread(us, them));
p = getstarg(player->argp[2], prompt, buf);
if (p == 0 || *p == 0)
return;
if ((price = atof(p)) == 0.0)
return;
#if defined(HUGE)
if ((price == HUGE) || (price > 1000000.0)) /* Inf causes overflow. */
#else
if (price > 1000000.0)
#endif
price = 1000000.0; /* bailey@math-cs.kent.edu */
/*
* no free lunches!
*/
if (price <= minmult)
price = minmult;
if (price >= maxmult)
price = maxmult;
if (commread() < 0) {
pr("Unable to re-read commodity file; get help!\n");
return;
}
multset(them, price);
if (commwrite() < 0) {
pr("Unable to write out commodity file; get help!\n");
}
}

View file

@ -299,10 +299,6 @@ struct keymatch configkeys[] = {
"Number of seconds commodities stay on the market for bidding"},
{"TRADE_DELAY", intset, (caddr_t)&TRADE_DELAY, 0,
"Number of seconds ships, planes, and units stay on the market for bidding"},
{"maxmult", doubleset, (caddr_t)&maxmult, 0,
"Maximum trade multiple (used for mult command)"},
{"minmult", doubleset, (caddr_t)&minmult, 0,
"Minimum trade multiple (used for mult command)"},
{"buytax", doubleset, (caddr_t)&buytax, 0,
"Tax (in percentage points) charged to the buyer on market purchases"},
{"tradetax", doubleset, (caddr_t)&tradetax, 0,

View file

@ -156,8 +156,6 @@ double bankint = 0.25; /* bank interest rate (dt * bars) */
charged (price paid * buytax).
Not perfect, but it works. :) */
double minmult = 0.5; /* minimum trade mulitple */
double maxmult = 10.0; /* maximum trade multiple */
double tradetax = 0.99; /* Tax charged on trade */
double buytax = 1.0; /* Tax charged on market purchases */
int startmob = 127; /* Sanctuary starting mobility */

View file

@ -162,7 +162,6 @@ struct cmndstr player_coms[] = {
{"move <c|m|s|g|p|i|o|b|f|r|u> <SECT> <NUM> <PATH|DESTINATION>", 1,
move, C_MOD, NORM + CAP},
{"mquota <SHIPS> <value>", 2, mobq, C_MOD, NORM + CAP},
{"mult [COUNTRY]", 1, mult, C_MOD, GOD},
{"name <SHIPS> <NAME>", 0, name, C_MOD, NORM},
{"nation", 0, nati, 0, VIS},
{"navigate <SHIPS> <PATH|DESTINATION>", 1, navi, C_MOD, NORM + CAP},

View file

@ -36,7 +36,7 @@ LIB = $(SRCDIR)/lib/libsubs.a
NTLIB = $(SRCDIR)\lib\libsubs.lib
OBJS = aircombat.o askyn.o aswplnsubs.o attsub.o bigmap.o border.o bsanct.o \
caploss.o chkmoney.o cnumb.o comsub.o control.o detonate.o disloan.o \
caploss.o chkmoney.o cnumb.o control.o detonate.o disloan.o \
distrea.o fileinit.o fortdef.o getbit.o getele.o land.o landgun.o \
list.o lndsub.o lostsub.o mission.o move.o mslsub.o mtch.o natarg.o \
neigh.o nreport.o nstr.o nuke.o nxtitem.o nxtsct.o paths.o plane.o \
@ -45,7 +45,7 @@ OBJS = aircombat.o askyn.o aswplnsubs.o attsub.o bigmap.o border.o bsanct.o \
takeover.o trdsub.o trechk.o whatitem.o wu.o
NTOBJS = aircombat.obj askyn.obj aswplnsubs.obj attsub.obj bigmap.obj \
border.obj bsanct.obj caploss.obj chkmoney.obj cnumb.obj comsub.obj \
border.obj bsanct.obj caploss.obj chkmoney.obj cnumb.obj \
control.obj detonate.obj disloan.obj distrea.obj fileinit.obj fortdef.obj \
getbit.obj getele.obj land.obj landgun.obj list.obj lndsub.obj \
lostsub.obj mission.obj move.obj mslsub.obj mtch.obj natarg.obj neigh.obj \

View file

@ -1,164 +0,0 @@
/*
* Empire - A multi-player, client/server Internet based war game.
* Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* ---
*
* 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.
*
* ---
*
* comsub.c: Commodity read/write stuff
*
* Known contributors to this file:
* Dave Pare, 1986
* Steve McClure, 1998
*/
#include "misc.h"
#include "player.h"
#include "var.h"
#include "nat.h"
#include "prototypes.h"
#if !defined(_WIN32)
#include <sys/uio.h>
#endif
int commf;
int c_comm[MAXNOC][I_MAX + 1];
float c_price[MAXNOC][I_MAX + 1];
float c_mult[MAXNOC][MAXNOC];
#if !defined(_WIN32)
static struct iovec commvec[3] = {
{(caddr_t)c_comm, sizeof(c_comm)}
,
{(caddr_t)c_price, sizeof(c_price)}
,
{(caddr_t)c_mult, sizeof(c_mult)}
};
static int nvec = sizeof(commvec) / sizeof(struct iovec);
#endif
/*
* comm file is the list of "deity commodities"
* lying around. Perhaps a better way of doing this
* might be at each update seeing what is on sale,
* then buying it, then distributing things amongst the
* people wanting the items.
*
* Of course that would be a gigantic pain...
*/
int
commread(void)
{
int n;
(void)lseek(commf, (off_t) 0, 0);
#if !defined(_WIN32)
if ((n = readv(commf, commvec, nvec)) !=
sizeof(c_comm) + sizeof(c_price) + sizeof(c_mult)) {
logerror("commread: readv returns %d", n);
return -1;
}
#else
if ((n = read(commf, c_comm, sizeof(c_comm))) != sizeof(c_comm)) {
logerror("commread: read returns %d, not %d", n, sizeof(c_comm));
return -1;
}
if ((n = read(commf, c_price, sizeof(c_price))) != sizeof(c_price)) {
logerror("commread: read returns %d, not %d", n, sizeof(c_price));
return -1;
}
if ((n = read(commf, c_mult, sizeof(c_mult))) != sizeof(c_mult)) {
logerror("commread: read returns %d, not %d", n, sizeof(c_mult));
return -1;
}
#endif
return 0;
}
int
commwrite(void)
{
#if defined(_WIN32)
int n;
#endif
(void)lseek(commf, (off_t) 0, 0);
#if !defined(_WIN32)
if (writev(commf, commvec, nvec) !=
sizeof(c_comm) + sizeof(c_price) + sizeof(c_mult)) {
logerror("commwrite: writev failed");
return -1;
}
#else
if ((n = write(commf, c_comm, sizeof(c_comm))) != sizeof(c_comm)) {
logerror("commwrite: write returns %d, not %d", n, sizeof(c_comm));
return -1;
}
if ((n = write(commf, c_price, sizeof(c_price))) != sizeof(c_price)) {
logerror("commwrite: write returns %d, not %d", n,
sizeof(c_price));
return -1;
}
if ((n = write(commf, c_mult, sizeof(c_mult))) != sizeof(c_mult)) {
logerror("commwrite: write returns %d, not %d", n, sizeof(c_mult));
return -1;
}
#endif
return 0;
}
/*
* returns amount of commodity, and price to the user
*/
int
commamt(natid trader, int product, float *priceval)
{
*priceval = c_price[trader][product] * c_mult[trader][player->cnum];
return c_comm[trader][product];
}
void
commset(natid trader, int product, int amt)
{
c_comm[trader][product] += amt;
}
double
multread(natid trader, natid tradee)
{
return c_mult[trader][tradee];
}
void
multset(natid tradee, float newmult)
{
c_mult[player->cnum][tradee] = newmult;
}
void
commprice(int product, float *newprice)
{
c_price[player->cnum][product] = *newprice;
}

View file

@ -104,7 +104,6 @@ int
trade_desc(struct trdstr *tp, union trdgenstr *tgp)
{
int i;
float price;
struct sctstr sect;
struct nukstr *np;
struct shpstr *sp;
@ -116,7 +115,6 @@ trade_desc(struct trdstr *tp, union trdgenstr *tgp)
struct plnstr plane;
struct lndstr land;
price = multread(tp->trd_owner, player->cnum) * tp->trd_price;
switch (tp->trd_type) {
case EF_NUKE:
np = &tgp->nuk;