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
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;
else
putland(save.lnd_uid, &save);
}
+#endif
min = get_minimum(&land, type);
ip = &ichr[type];