update: Round the people's work randomly rather than down

Rounding work down can lead to a bit of work micromanagement.  For
instance, four military on a lonely island accomplish nothing in 60
ETU updates, but five will make one point of work per update.  They
can build a 2% harbor in four updates, as long as rollover_avail_max
is at least 3.  Six to eight will be no faster.

The people's work used to be rounded randomly until Empire 3's big
effort to make the update code work for budget switched to rounding it
down, perhaps accidentally.

Switch back to rounding randomly, so that players don't have to get it
exactly right.  Four military now get to 2% in five updates on
average, five in four, six or seven in three, and so forth.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2016-06-12 14:26:29 +02:00
parent c6a6c7296f
commit d3c1da354d
18 changed files with 3393 additions and 3405 deletions

View file

@ -129,5 +129,6 @@ total_work(int sctwork, int etu, int civil, int milit, int uw,
if (uw > maxworkers)
uw = maxworkers;
return (civil * sctwork / 100.0 + milit / 2.5 + uw) * etu / 100.0;
return roundavg((civil * sctwork / 100.0 + milit / 2.5 + uw)
* etu / 100.0);
}