From 9a2e1ccd6c24093d1e7dd1192f447d0f1d6b9796 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 17 Jul 2016 10:55:31 +0200 Subject: [PATCH] update: Delivery abandons sectors incorrectly, fix it not to Deliver fails to abandon sectors when it ships out all civilians and military. The sector remains owned until the next non-update sector update abandons it. Has always been broken. Distribution had the same bug until commit d0f3847 (v4.3.20) fixed it. Fix it the same way for delivery: adjust the amount moved to avoid moving out the last civilian, or the last military if there are no civilians. Signed-off-by: Markus Armbruster --- info/deliver.t | 3 +++ src/lib/update/deliver.c | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/info/deliver.t b/info/deliver.t index dc18adcb..5b2c348f 100644 --- a/info/deliver.t +++ b/info/deliver.t @@ -27,6 +27,9 @@ direction that a sector delivers to, then put a '+' before the number Note that delivery thresholds are stored as multiples of 8. If you specify a threshold that is not a multiple of 8, it will be rounded down. .s1 +Delivery will not ship out the last civilian or the last military if +there are no civilians, regardless of thresholds. +.s1 The direction must be specified as one of the six direction characters, (usually `y' `u' `j' `n' `b' or `g'), the \*Qno-direction\*U character, (usually `h'). If no direction is specified, then the direction will diff --git a/src/lib/update/deliver.c b/src/lib/update/deliver.c index c55cd0be..cace76eb 100644 --- a/src/lib/update/deliver.c +++ b/src/lib/update/deliver.c @@ -27,7 +27,7 @@ * deliver.c: Deliver commodities to neighboring sector * * Known contributors to this file: - * + * Markus Armbruster, 2004-2016 */ #include @@ -89,6 +89,9 @@ deliver(struct sctstr *from, struct ichrstr *ip, int dir, return 0; } } + /* make sure not to abandon the sector */ + if (vtype == I_CIVIL || (vtype == I_MILIT && !to->sct_item[I_CIVIL])) + amt_moved--; /* * disallow delivery into prohibited sectors. * calculate unit movement cost; decrease amount if