empserver/tests
Markus Armbruster ae2ae938b5 update: Saner rounding of unit building money and work
shiprepair() limits the efficiency gain to how much the workers can
build, rounding randomly.  It charges work, money and materials for
the efficiency actually gained, rounding work up, money down, and
materials randomly.  Same for planerepair() and landrepair().  Has
always been that way.

If you get lucky with the random rounding, you may get a bit of extra
work done for free.

The budget command runs the update code, and can be off by one due to
different random rounding.

Sector production used to have the same issue, only more serious,
because a single unit of tech production matters much more for the
budget than a single point of unit efficiency gain.  I fixed it in
commit 6f7c93c, v4.3.31.

Fix it for unit building the same way: limit efficiency gain to the
amount the workers can produce (no rounding).  Work becomes a hard
limit, not subject to random fluctuations.  Randomly round work and
money charged for actual gain, like we do for materials.  On average,
this charges exactly the work and money that's used.

This lets budget predict how much gets built a bit more accurately.
It's still not exact, as the amount of work available for building
remains slightly random, and the build cost is randomly rounded.

The old rounding of work for ships carries the comment "I didn't use
roundavg here, because I want to penalize the player with a large
number of ships."  Likewise for planes.  Rounding work up rather than
randomly increases the work cost by 0.5 per ship, plane or land unit
on average.  I could keep the penalty by adding 0.5 before random
rounding.  Not worth it, since the effect is actually pretty trivial.
Let's examine a fairly extreme case: an airfield with 600 available
work repairing a huge number of lightly damaged planes, say f2 with
81% average efficiency.  The old code lets the airfield repair roughly
600 / 6.5 = ~92 planes, the new code 600 / 6 = 100.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
2017-08-06 19:59:58 +02:00
..
actofgod sect: Keep work percentage without civilians at 100% 2017-08-06 19:59:57 +02:00
bridgefall sect: Keep work percentage without civilians at 100% 2017-08-06 19:59:57 +02:00
build sect: Keep work percentage without civilians at 100% 2017-08-06 19:59:57 +02:00
empdump power: Make item power value configurable 2017-08-06 19:59:45 +02:00
fairland sect: Keep work percentage without civilians at 100% 2017-08-06 19:59:57 +02:00
files sail: Remove option SAIL 2015-02-28 16:11:28 +01:00
fire sect: Keep work percentage without civilians at 100% 2017-08-06 19:59:57 +02:00
info tests/info: New; checks info and code agree on commands 2014-01-06 20:50:06 +01:00
navi-march sect: Fix revert to deity and "no civilians" corner cases 2017-08-06 19:59:57 +02:00
retreat sect: Keep work percentage without civilians at 100% 2017-08-06 19:59:57 +02:00
smoke update: Saner rounding of unit building money and work 2017-08-06 19:59:58 +02:00
torpedo sect: Keep work percentage without civilians at 100% 2017-08-06 19:59:57 +02:00
update update: Saner rounding of unit building money and work 2017-08-06 19:59:58 +02:00
version config: Make work to build sectors configurable 2017-08-06 19:59:58 +02:00
actofgod-test tests: Define and use some abbreviations 2015-02-01 16:52:59 +01:00
bridgefall-test tests: Define and use some abbreviations 2015-02-01 16:52:59 +01:00
build-test tests: Define and use some abbreviations 2015-02-01 16:52:59 +01:00
empdump-test tests: Rewrite the previous commit's sed_i helper 2015-03-04 08:15:13 +01:00
fairland-test tests/files tests/fairland: Check stderr and exit status 2015-02-01 16:52:59 +01:00
files-test tests/files tests/fairland: Check stderr and exit status 2015-02-01 16:52:59 +01:00
fire-test tests: Define and use some abbreviations 2015-02-01 16:52:59 +01:00
info-test tests: Define and use some abbreviations 2015-02-01 16:52:59 +01:00
navi-march-test navigate: Require all ships to start in the same sector 2015-02-28 16:13:14 +01:00
normalize.pl tests/version: New; exercises config introspection commands 2017-08-06 14:03:55 +02:00
retreat-test tests/retreat: Cover trains 2015-03-02 08:20:48 +01:00
smoke-test tests: Define and use some abbreviations 2015-02-01 16:52:59 +01:00
test-common.sh config: Split table sect-chr for legibility 2017-08-06 19:59:58 +02:00
torpedo-test tests/torpedo: New; exercises torpedo command 2015-03-02 08:20:52 +01:00
update-test tests/update: New; exercises the update 2017-08-06 14:04:15 +02:00
version-test tests/version: New; exercises config introspection commands 2017-08-06 14:03:55 +02:00