char *in_name;
unsigned char in_lcms; /* construction materials */
unsigned char in_hcms;
- unsigned char in_dcost; /* dollars */
- unsigned char in_mcost; /* mobility */
+ short in_bmobil; /* mobility to build 100% */
+ int in_cost; /* cost to build 100% */
unsigned char in_enable; /* enabled iff non-zero */
};
*
* Known contributors to this file:
* Steve McClure, 1996-2000
+ * Markus Armbruster, 2004-2016
*/
#include <config.h>
+#include "chance.h"
#include "commands.h"
int
int type;
int value;
int ovalue;
- int maxup;
+ int maxup, lim;
struct natstr *natp;
int lneeded;
int hneeded;
- int mneeded;
- int dneeded;
int wanted;
p = getstarg(player->argp[1],
continue;
}
}
- mneeded = incp->in_mcost * maxup;
- if ((sect.sct_mobil - 1) < mneeded) {
- mneeded = sect.sct_mobil - 1;
- if (mneeded < 0)
- mneeded = 0;
- maxup = mneeded / incp->in_mcost;
- if (maxup <= 0) {
- pr("Not enough mobility in %s\n",
- xyas(sect.sct_x, sect.sct_y, player->cnum));
- continue;
- }
+
+ lim = (sect. sct_mobil - 1) * 100 / incp->in_bmobil;
+ if (lim <= 0) {
+ pr("Not enough mobility in %s\n",
+ xyas(sect.sct_x, sect.sct_y, player->cnum));
+ continue;
}
- dneeded = incp->in_dcost * maxup;
+ if (maxup > lim)
+ maxup = lim;
+
natp = getnatp(player->cnum);
- if (player->dolcost + dneeded > natp->nat_money) {
+ lim = (natp->nat_money - player->dolcost) * 100 / incp->in_cost;
+ if (lim <= 0) {
pr("Not enough money left to improve %s by %d%%\n",
xyas(sect.sct_x, sect.sct_y, player->cnum), maxup);
break;
}
+ if (maxup > lim)
+ maxup = lim;
+
lneeded = incp->in_lcms * maxup;
hneeded = incp->in_hcms * maxup;
- mneeded = incp->in_mcost * maxup;
- dneeded = incp->in_dcost * maxup;
- player->dolcost += dneeded;
sect.sct_item[I_LCM] -= lneeded;
sect.sct_item[I_HCM] -= hneeded;
- sect.sct_mobil -= mneeded;
+ sect.sct_mobil -= roundavg(maxup * incp->in_bmobil / 100.0);
+ player->dolcost += maxup * incp->in_cost / 100.0;
ovalue = value;
value += maxup;
if (CANT_HAPPEN(value > 100))
CA_DUMP_CONST},
{"lcms", fldoff(in_lcms), NSC_UCHAR, 0, NULL, EF_BAD, 0, CA_DUMP},
{"hcms", fldoff(in_hcms), NSC_UCHAR, 0, NULL, EF_BAD, 0, CA_DUMP},
- {"dcost", fldoff(in_dcost), NSC_UCHAR, 0, NULL, EF_BAD, 0, CA_DUMP},
- {"mcost", fldoff(in_mcost), NSC_UCHAR, 0, NULL, EF_BAD, 0, CA_DUMP},
+ {"bmobil", fldoff(in_bmobil), NSC_SHORT, 0, NULL, EF_BAD, 0, CA_DUMP},
+ {"cost", fldoff(in_cost), NSC_INT, 0, NULL, EF_BAD, 0, CA_DUMP},
{"enable", fldoff(in_enable), NSC_UCHAR, 0, NULL, EF_BAD, 0, CA_DUMP},
{NULL, 0, NSC_NOTYPE, 0, NULL, EF_BAD, 0, CA_DUMP}
#undef CURSTR
# infra.config: Infrastructure characteristics
#
# Known contributors to this file:
-# Markus Armbruster, 2006-2011
+# Markus Armbruster, 2006-2016
#
# Derived from sect.c; known contributors:
# Dave Pare, 1986
# econfig key custom_tables.
config infrastructure
-name lcm hcm dcost mcost enab
-"road network" 2 2 2 1 1
-"rail network" 1 1 1 1 1
-"defense factor" 1 1 1 1 0
+name lcm hcm bmob cost enab
+"road network" 2 2 100 200 1
+"rail network" 1 1 100 100 1
+"defense factor" 1 1 100 100 0
/config
pr("%-23.23s %4d %4d %5d %5d\n",
intrchr[i].in_name,
intrchr[i].in_lcms * 100, intrchr[i].in_hcms * 100,
- intrchr[i].in_mcost * 100, intrchr[i].in_dcost * 100);
+ intrchr[i].in_bmobil, intrchr[i].in_cost);
first = 0;
}
}
config infrastructure
-name lcms hcms dcost mcost enable
+name lcms hcms bmobil cost enable
"lala" 1 1 1 1 1
# value for field 1 must be "road network"
config infrastructure
-name lcm hcm dcost mcost enab
-"road network" 2 2 2 1 1
-"rail network" 1 1 1 1 1
-"defense factor" 1 1 1 1 0
+name lcm hcm bmob cost enab
+"road network" 2 2 100 200 1
+"rail network" 1 1 100 100 1
+"defense factor" 1 1 100 100 0
/con
# malformed table footer
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 "lcms" 1 0 0 -1
Play#0 output Play#0 1 "hcms" 1 0 0 -1
- Play#0 output Play#0 1 "dcost" 1 0 0 -1
- Play#0 output Play#0 1 "mcost" 1 0 0 -1
+ Play#0 output Play#0 1 "bmobil" 1 0 0 -1
+ Play#0 output Play#0 1 "cost" 1 0 0 -1
Play#0 output Play#0 1 "enable" 1 0 0 -1
Play#0 output Play#0 1 /6
Play#0 output Play#0 6 0 640
Play#0 input xdump infrastructure *
Play#0 command xdump
Play#0 output Play#0 1 XDUMP infrastructure 0
- Play#0 output Play#0 1 "road\\040network" 2 2 2 1 1
- Play#0 output Play#0 1 "rail\\040network" 1 1 1 1 0
- Play#0 output Play#0 1 "defense\\040factor" 1 1 1 1 0
+ Play#0 output Play#0 1 "road\\040network" 2 2 100 200 1
+ Play#0 output Play#0 1 "rail\\040network" 1 1 100 100 0
+ Play#0 output Play#0 1 "defense\\040factor" 1 1 100 100 0
Play#0 output Play#0 1 /3
Play#0 output Play#0 6 0 640
Play#0 input xdump updates *
Play#1 input xdump infrastructure *
Play#1 command xdump
Play#1 output Play#1 1 XDUMP infrastructure 0
- Play#1 output Play#1 1 "road\\040network" 2 2 2 1 1
- Play#1 output Play#1 1 "rail\\040network" 1 1 1 1 0
- Play#1 output Play#1 1 "defense\\040factor" 1 1 1 1 0
+ Play#1 output Play#1 1 "road\\040network" 2 2 100 200 1
+ Play#1 output Play#1 1 "rail\\040network" 1 1 100 100 0
+ Play#1 output Play#1 1 "defense\\040factor" 1 1 100 100 0
Play#1 output Play#1 1 /3
Play#1 output Play#1 6 0 0
Play#1 input xdump updates *