update: Fix ship, plane, land unit repair work use abroad

Ship, plane and land unit repair uses new work, except in sectors
owned by countries with a higher country number.

This inconsistency is an artifact of how the update is sequenced: we
work on countries one after the other.  A country's ships, planes and
land units get repaired before higher-numbered countries' sectors
produce.  Any ship, plane and land unit repairs in such sectors use
old work instead of new work.

Repair work use changed several times during Empire's history.

In BSD Empire, repairs use old work, because it updates ships and
planes before sectors.

Chainsaw added budget priorities and the budget command as option
BUDGET.  Budget priorities let players choose separately for ships,
planes and land units whether to use old or new work for repairs.

The option also changed the update to work on countries one after the
other, presumably to permit a more efficient implementation of the
budget command.

Chainsaw also introduced repairs in foreign sectors under option
ALLYHARBORWORK.

With BUDGET disabled, all repairs still use old work, whether at home
or abroad.  With BUDGET enabled, work use of repairs at home depends
on budget priorities, but work use abroad depend on country numbers.

Both options became standard in Empire 2.

Since v4.3.6, repairs at home always use new work (commit 967299a and
commit 520446e).

To make repairs abroad always use new work as well, we need to update
all sectors before any ship repair.  This is straightforward: split
the loop over countries between sectors and unit building.  For
symmetry, also split it between unit maintenance and sectors.

The budget command is differently broken, and will be fixed next.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2016-07-10 20:05:57 +02:00
parent a97ac7a401
commit 459dec0af0
11 changed files with 160 additions and 156 deletions

View file

@ -25,13 +25,13 @@ This document gives a rough order of events during the update.
a) pay military on board
e) pay for military reserves.
2) Produce, in order of country #
a) ship maintenance
2) Produce
a) ship maintenance, in order of country number
pay maintenance, then feed and plague people on board
b) plane maintenance
c) land unit maintenance
b) plane maintenance, in order of country number
c) land unit maintenance, in order of country number
pay maintenance, then feed and plague people on board
d) produce for all sectors
g) sectors, in order of country number
a) people in non-sanctuary sectors eat
If not enough is available, the excess people will
starve off. No more than 50% of the people
@ -45,12 +45,12 @@ This document gives a rough order of events during the update.
e) sectors that are stopped are skipped (see info stop)
f) first increase eff
g) then make things
e) ship building
d) ship building, in order of country number
first increase efficiency, then produce
stopped ships are started, but not built (see info stop)
f) plane building
e) plane building, in order of country number
stopped planes are started, but not built (see info stop)
g) land unit building
f) land unit building, in order of country number
stopped land units are started, but not built (see info stop)
3) Then, do deliveries for all sectors in the world, row by row, going from