2 * Empire - A multi-player, client/server Internet based war game.
3 * Copyright (C) 1986-2021, Dave Pare, Jeff Bailey, Thomas Ruschak,
4 * Ken Stevens, Steve McClure, Markus Armbruster
6 * Empire is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 * See files README, COPYING and CREDITS in the root of the source
22 * tree for related information and legal notices. It is expected
23 * that future projects/authors will amend these files as needed.
29 * Known contributors to this file:
41 age_people(int n, int etu)
43 /* age by 1% per 24 ETUs */
44 return roundavg(n * (1.0 - etu / 2400.0));
50 float best_tech, best_res;
58 for (i = 0; NULL != (np = getnatp(i)); i++) {
59 if (np->nat_stat != STAT_ACTIVE)
62 if (best_tech < np->nat_level[NAT_TLEV])
63 best_tech = np->nat_level[NAT_TLEV];
64 if (best_res < np->nat_level[NAT_RLEV])
65 best_res = np->nat_level[NAT_RLEV];
66 if (level_age_rate != 0.0) {
67 delta = np->nat_level[NAT_RLEV] * etu / (100 * level_age_rate);
68 np->nat_level[NAT_RLEV] -= delta;
69 delta = np->nat_level[NAT_TLEV] * etu / (100 * level_age_rate);
70 np->nat_level[NAT_TLEV] -= delta;
72 np->nat_reserve = age_people(np->nat_reserve, etu);
76 for (i = 0; NULL != (np = getnatp(i)); i++) {
77 if (np->nat_stat < STAT_SANCT || np->nat_stat == STAT_GOD)
79 level = np->nat_level[NAT_TLEV];
80 if (level < best_tech && chance(0.2))
81 np->nat_level[NAT_TLEV] += (best_tech - level) / 3;
82 level = np->nat_level[NAT_RLEV];
83 if (level < best_res && chance(0.2))
84 np->nat_level[NAT_RLEV] += (best_res - level) / 3;