Sectors need space for items, deliveries and distribution thresholds.
To save space, the ancients invented `variables': a collection of key-value pairs, missing means zero value, space for `enough' keys. This complicates the code, as assigning to a `variable' can fail for lack of space. Over time, `enough' increased, and for quite some time now `variables' have been *wasting* space. This changeset replaces them, except in struct mchrstr, struct lchrstr and struct pchrstr, where they are read-only, and will be replaced later. It is only a first step; further cleanup is required. To simplify and minimize this necessarily huge changeset, the new item[] arrays have an unused slot 0, and the old variable types V_CIVIL, ... are still defined, but must have the same values as the item types I_CIVIL, ...
This commit is contained in:
parent
ba86513b01
commit
eccc5cb7d7
86 changed files with 853 additions and 1226 deletions
|
@ -87,10 +87,10 @@ do_conv(struct nstr_sect nstr, int uwtoconvert, int for_real)
|
|||
continue;
|
||||
if (sect.sct_oldown == player->cnum)
|
||||
continue;
|
||||
civ = getvar(V_CIVIL, (s_char *)§, EF_SECTOR);
|
||||
civ = sect.sct_item[I_CIVIL];
|
||||
if (civ == 0)
|
||||
continue;
|
||||
mil = getvar(V_MILIT, (s_char *)§, EF_SECTOR);
|
||||
mil = sect.sct_item[I_MILIT];
|
||||
|
||||
/*
|
||||
* Military units count according to the number of
|
||||
|
@ -128,7 +128,7 @@ do_conv(struct nstr_sect nstr, int uwtoconvert, int for_real)
|
|||
newuw = civ;
|
||||
if (newuw > uwtoconvert)
|
||||
newuw = uwtoconvert;
|
||||
uw = getvar(V_UW, (s_char *)§, EF_SECTOR);
|
||||
uw = sect.sct_item[I_UW];
|
||||
if (uw > 999)
|
||||
continue;
|
||||
if (newuw > 999 - uw)
|
||||
|
@ -157,13 +157,9 @@ do_conv(struct nstr_sect nstr, int uwtoconvert, int for_real)
|
|||
player->dolcost += newuw * 1.5;
|
||||
if (newuw < mob)
|
||||
mob = newuw;
|
||||
if (putvar(V_UW, newuw + uw, (s_char *)§, EF_SECTOR) == 0) {
|
||||
pr("No room for new uw in %s\n",
|
||||
xyas(sect.sct_x, sect.sct_y, player->cnum));
|
||||
continue;
|
||||
}
|
||||
sect.sct_item[I_UW] = newuw + uw;
|
||||
civ -= newuw;
|
||||
putvar(V_CIVIL, civ, (s_char *)§, EF_SECTOR);
|
||||
sect.sct_item[I_CIVIL] = civ;
|
||||
mob = roundavg(mob * 0.2);
|
||||
if (mob > sect.sct_mobil)
|
||||
mob = sect.sct_mobil;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue