]> git.pond.sub.org Git - empserver/commit
update: Fix ship, plane, land unit repair work use abroad
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 10 Jul 2016 18:05:57 +0000 (20:05 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 6 Aug 2017 18:08:30 +0000 (20:08 +0200)
commit459dec0af0e12bc7b49a7bceb20124b03a413d50
tree97b628d20017e128e8fbf4c28f0fa18493b257cd
parenta97ac7a40150d9bb839dbc343bad58cfbc5b4b68
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>
info/Update-sequence.t
src/lib/update/main.c
tests/smoke/04/01-1
tests/smoke/14/02-2
tests/smoke/15/08-8
tests/smoke/final.xdump
tests/smoke/journal.log
tests/update/01-1
tests/update/99-POGO
tests/update/final.xdump
tests/update/journal.log