Disable recursive supply of land units
Its implementation in s_commod() increases lnd_seqno even when !actually_doit, which can cause spurious seqno oopses in callers of lnd_could_be_supplied(). I can't be bothered to clean up this mess right now, because recursive resupply is too dumb to be really useful anyway: each step uses the first source it finds, without consideration of mobility cost.
This commit is contained in:
parent
5ea0d19c20
commit
ed5ca70cb2
2 changed files with 23 additions and 3 deletions
|
@ -66,9 +66,11 @@ efficient. This uses mobility from the harbor.
|
|||
If it still can't find enough supplies, the unit will look for an owned
|
||||
unit with the 'supply' ability. (see info show for information on how to
|
||||
find out about abilities of units) In this case, the supply unit uses its
|
||||
mobility to use the supplies. After it supplies the unit, the supply unit
|
||||
will then itself try to re-supply, so that it is possible to form a chain
|
||||
of supply units reaching back to a headquarters or supply ship.
|
||||
mobility to use the supplies.
|
||||
\" Disabled due to bugs:
|
||||
\" After it supplies the unit, the supply unit
|
||||
\" will then itself try to re-supply, so that it is possible to form a chain
|
||||
\" of supply units reaching back to a headquarters or supply ship.
|
||||
.s1
|
||||
If after all this the unit can't get enough, it is out of supplies.
|
||||
.s1
|
||||
|
|
|
@ -329,6 +329,23 @@ s_commod(int own, int x, int y, i_type type, int total_wanted,
|
|||
if ((land.lnd_ship >= 0) && (sect.sct_effic < 2))
|
||||
continue;
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* Recursive supply is disabled for now. It can introduce
|
||||
* cycles into the "resupplies from" relation. The code below
|
||||
* attempts to break these cycles by temporarily zapping the
|
||||
* commodity being supplied. That puts the land file in a
|
||||
* funny state temporarily, risking loss of supplies when
|
||||
* something goes wrong on the way. Worse, it increases
|
||||
* lnd_seqno even when !actually_doit, which can lead to
|
||||
* spurious seqno mismatch oopses in users of
|
||||
* lnd_could_be_supplied(). I can't be bothered to clean up
|
||||
* this mess right now, because recursive resupply is too dumb
|
||||
* to be really useful anyway: each step uses the first source
|
||||
* it finds, without consideration of mobility cost. If you
|
||||
* re-enable it, don't forget to uncomment its documentation
|
||||
* in supply.t as well.
|
||||
*/
|
||||
if (land.lnd_item[type] - wanted < get_minimum(&land, type)) {
|
||||
struct lndstr save;
|
||||
|
||||
|
@ -349,6 +366,7 @@ s_commod(int own, int x, int y, i_type type, int total_wanted,
|
|||
else
|
||||
putland(save.lnd_uid, &save);
|
||||
}
|
||||
#endif
|
||||
|
||||
min = get_minimum(&land, type);
|
||||
ip = &ichr[type];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue