of copies made by getvec(). This is safe, because the old code made
single copies and always flushed them back into the unit structures
before flushing those.
s_char buf[1024];
s_char inbuf[128];
int type;
s_char buf[1024];
s_char inbuf[128];
int type;
int value;
int ovalue;
int maxup;
int value;
int ovalue;
int maxup;
continue;
if (!check_sect_ok(§))
continue;
continue;
if (!check_sect_ok(§))
continue;
- getvec(VT_ITEM, vec, (s_char *)§, EF_SECTOR);
maxup = 100 - value;
wanted = atoi(p);
if (wanted < 0)
maxup = 100 - value;
wanted = atoi(p);
if (wanted < 0)
lneeded = intrchr[type].in_lcms * maxup;
if (opt_NO_LCMS)
lneeded = 0;
lneeded = intrchr[type].in_lcms * maxup;
if (opt_NO_LCMS)
lneeded = 0;
- if (vec[I_LCM] < lneeded) {
- lneeded = vec[I_LCM];
+ if (sect.sct_item[I_LCM] < lneeded) {
+ lneeded = sect.sct_item[I_LCM];
maxup = lneeded / intrchr[type].in_lcms;
if (maxup <= 0) {
pr("Not enough lcms in %s\n",
maxup = lneeded / intrchr[type].in_lcms;
if (maxup <= 0) {
pr("Not enough lcms in %s\n",
hneeded = intrchr[type].in_hcms * maxup;
if (opt_NO_HCMS)
hneeded = 0;
hneeded = intrchr[type].in_hcms * maxup;
if (opt_NO_HCMS)
hneeded = 0;
- if (vec[I_HCM] < hneeded) {
- hneeded = vec[I_HCM];
+ if (sect.sct_item[I_HCM] < hneeded) {
+ hneeded = sect.sct_item[I_HCM];
maxup = hneeded / intrchr[type].in_hcms;
if (maxup <= 0) {
pr("Not enough hcms in %s\n",
maxup = hneeded / intrchr[type].in_hcms;
if (maxup <= 0) {
pr("Not enough hcms in %s\n",
dneeded = intrchr[type].in_dcost * maxup;
player->dolcost += dneeded;
if (!opt_NO_LCMS)
dneeded = intrchr[type].in_dcost * maxup;
player->dolcost += dneeded;
if (!opt_NO_LCMS)
+ sect.sct_item[I_LCM] -= lneeded;
+ sect.sct_item[I_HCM] -= hneeded;
sect.sct_mobil -= mneeded;
sect.sct_mobil -= mneeded;
- putvec(VT_ITEM, vec, (s_char *)§, EF_SECTOR);
ovalue = value;
value += maxup;
if (value > 100)
ovalue = value;
value += maxup;
if (value > 100)
struct lndstr land;
int targets;
s_char *p;
struct lndstr land;
int targets;
s_char *p;
- int vec[I_MAX + 1], mil, nsec;
s_char prompt[128];
s_char buf[128];
s_char prompt[128];
s_char buf[128];
while (nxtsct(&nstr, §)) {
if (!player->owner)
continue;
while (nxtsct(&nstr, §)) {
if (!player->owner)
continue;
- if (getvec(VT_ITEM, vec, (s_char *)§, EF_SECTOR) <= 0)
- continue;
- mil = vec[I_MILIT];
+ mil = sect.sct_item[I_MILIT];
nsec = 0;
snxtitem_xy(&ni, EF_LAND, sect.sct_x, sect.sct_y);
while (nxtitem(&ni, (s_char *)&land)) {
nsec = 0;
snxtitem_xy(&ni, EF_LAND, sect.sct_x, sect.sct_y);
while (nxtitem(&ni, (s_char *)&land)) {
- if (vec[item] == 0 || vec[I_CIVIL] > mil * 10)
+ if (sect.sct_item[item] == 0 || sect.sct_item[I_CIVIL] > mil * 10)
- nshot = vec[item] > targets ? targets : vec[item];
+ nshot = sect.sct_item[item] > targets ? targets : sect.sct_item[item];
m = ((double)nshot + 4.0) / 5.0;
if (m > sect.sct_mobil) {
m = ((double)nshot + 4.0) / 5.0;
if (m > sect.sct_mobil) {
m = sect.sct_mobil;
mob_cost = roundavg(m);
sect.sct_mobil -= (u_char)mob_cost;
m = sect.sct_mobil;
mob_cost = roundavg(m);
sect.sct_mobil -= (u_char)mob_cost;
+ sect.sct_item[item] -= nshot;
pr("BANG!! (thump) %d %s shot in %s!\n",
nshot, ip->i_name, xyas(sect.sct_x, sect.sct_y, player->cnum));
if (chance(nshot / 100.0))
nreport(player->cnum, N_SHOOT_CIV, sect.sct_oldown, 1);
pr("BANG!! (thump) %d %s shot in %s!\n",
nshot, ip->i_name, xyas(sect.sct_x, sect.sct_y, player->cnum));
if (chance(nshot / 100.0))
nreport(player->cnum, N_SHOOT_CIV, sect.sct_oldown, 1);
- if (vec[item] <= 0 && item == V_CIVIL
+ if (sect.sct_item[item] <= 0 && item == I_CIVIL
&& (sect.sct_own != sect.sct_oldown)) {
sect.sct_oldown = sect.sct_own;
pr(" %s is now completely yours\n",
xyas(sect.sct_x, sect.sct_y, player->cnum));
}
&& (sect.sct_own != sect.sct_oldown)) {
sect.sct_oldown = sect.sct_own;
pr(" %s is now completely yours\n",
xyas(sect.sct_x, sect.sct_y, player->cnum));
}
- sect.sct_item[item] = vec[item];
putsect(§);
}
return RET_OK;
putsect(§);
}
return RET_OK;
while (nxtsct(&nstr, &from)) {
if (!player->owner && !player->god)
continue;
while (nxtsct(&nstr, &from)) {
if (!player->owner && !player->god)
continue;
- getvec(VT_ITEM, vec, (s_char *)&from, EF_SECTOR);
nrecon = 0;
nunits = 0;
snxtitem_xy(&ni, EF_LAND, from.sct_x, from.sct_y);
nrecon = 0;
nunits = 0;
snxtitem_xy(&ni, EF_LAND, from.sct_x, from.sct_y);
if (lchr[(int)land.lnd_type].l_flags & L_RECON)
nrecon++;
}
if (lchr[(int)land.lnd_type].l_flags & L_RECON)
nrecon++;
}
- if ((military = vec[I_MILIT]) == 0 && (nunits == 0))
+ if ((military = from.sct_item[I_MILIT]) == 0 && (nunits == 0))
continue;
x = from.sct_x;
y = from.sct_y;
continue;
x = from.sct_x;
y = from.sct_y;
if ((savemil != military) && (savemil > 0)) {
if ((military < 0) || (military > savemil))
military = 0;
if ((savemil != military) && (savemil > 0)) {
if ((military < 0) || (military > savemil))
military = 0;
- vec[I_MILIT] = military;
- putvec(VT_ITEM, vec, (s_char *)&from, EF_SECTOR);
+ from.sct_item[I_MILIT] = military;
int n, hcms, lcms;
int effdone = 0;
int n, hcms, lcms;
int effdone = 0;
- getvec(VT_ITEM, vec, (s_char *)sp, EF_SECTOR);
-
work_cost = 0;
if (sp->sct_type != sp->sct_newtype) {
/*
work_cost = 0;
if (sp->sct_type != sp->sct_newtype) {
/*
work_cost = work;
if (dchr[sp->sct_type].d_lcms > 0) {
work_cost = work;
if (dchr[sp->sct_type].d_lcms > 0) {
+ lcms = sp->sct_item[I_LCM];
lcms /= dchr[sp->sct_type].d_lcms;
if (work_cost > lcms)
work_cost = lcms;
}
if (dchr[sp->sct_type].d_hcms > 0) {
lcms /= dchr[sp->sct_type].d_lcms;
if (work_cost > lcms)
work_cost = lcms;
}
if (dchr[sp->sct_type].d_hcms > 0) {
+ hcms = sp->sct_item[I_HCM];
hcms /= dchr[sp->sct_type].d_hcms;
if (work_cost > hcms)
work_cost = hcms;
hcms /= dchr[sp->sct_type].d_hcms;
if (work_cost > hcms)
work_cost = hcms;
if ((dchr[sp->sct_type].d_lcms > 0) ||
(dchr[sp->sct_type].d_hcms > 0)) {
if ((dchr[sp->sct_type].d_lcms > 0) ||
(dchr[sp->sct_type].d_hcms > 0)) {
- vec[I_LCM] -= work_cost * dchr[sp->sct_type].d_lcms;
- vec[I_HCM] -= work_cost * dchr[sp->sct_type].d_hcms;
+ sp->sct_item[I_LCM] -= work_cost * dchr[sp->sct_type].d_lcms;
+ sp->sct_item[I_HCM] -= work_cost * dchr[sp->sct_type].d_hcms;
}
effdone += work_cost;
}
}
effdone += work_cost;
}
- putvec(VT_ITEM, vec, (s_char *)sp, EF_SECTOR);