Konfigurierbar

Ich habe zumindest mal fix eine eigene Funktion draus gemacht und es mit
einer XML Option versehen. Es ist Default an, da auch in E3 die Bauern
rückläufig sind, und da E4 auf den selben Regeln aufbaut es auch da
sinnvoll wäre "tote" Regionen wiederzubeleben.
This commit is contained in:
CTD 2014-12-15 09:48:43 +01:00
parent 1cce4927a0
commit 7f39763ee1
2 changed files with 35 additions and 28 deletions

View File

@ -676,6 +676,39 @@ growing_herbs(region * r, const int current_season, const int last_weeks_season)
}
}
void immigration(void)
{
region *r;
log_info(" - Einwanderung...");
int repopulate=get_param_int(global.parameters, "rules.economy.repopulate", 1);
for (r = regions; r; r = r->next) {
if (r->land && r->land->newpeasants) {
int rp = rpeasants(r) + r->land->newpeasants;
rsetpeasants(r, _max(0, rp));
}
/* Genereate some (0-2 to 0-6 depending on the income) peasants out of nothing */
/*if less then 50 are in the region and there is space and no monster or deamon units in the region */
int peasants = rpeasants(r);
if (repopulate && r->land && (peasants < 50) && maxworkingpeasants(r) > (peasants+30)*2)
{
int badunit = 0;
unit *u;
for (u = r->units; u; u = u->next) {
if (!playerrace(u_race(u)) || u_race(u) == get_race(RC_DAEMON))
{
badunit = 1;
break;
}
}
if (badunit == 0)
{
peasants += (int)(rng_double()*(wage(r, NULL, NULL, turn) - 9));
rsetpeasants(r, peasants);
}
}
}
}
void demographics(void)
{
region *r;
@ -743,34 +776,7 @@ void demographics(void)
};
remove_empty_units();
log_info(" - Einwanderung...");
for (r = regions; r; r = r->next) {
if (r->land && r->land->newpeasants) {
int rp = rpeasants(r) + r->land->newpeasants;
rsetpeasants(r, _max(0, rp));
}
/* Genereate some (0-2 to 0-6 depending on the income) peasants out of nothing */
/*if less then 50 are in the region and there is space and no monster or deamon units in the region */
int peasants = rpeasants(r);
if (r->land && (peasants < 50) && maxworkingpeasants(r) > (peasants+30)*2)
{
int badunit = 0;
unit *u;
for (u = r->units; u; u = u->next) {
if (!playerrace(u_race(u)) || u_race(u) == get_race(RC_DAEMON))
{
badunit = 1;
break;
}
}
if (badunit == 0)
{
peasants += (int)(rng_double()*(wage(r, NULL, NULL, turn) - 9));
rsetpeasants(r, peasants);
}
}
}
immigration();
checkorders();
}

View File

@ -34,6 +34,7 @@ extern "C" {
int writepasswd(void);
void demographics(void);
void immigration(void);
void update_guards(void);
void update_subscriptions(void);
void deliverMail(struct faction *f, struct region *r, struct unit *u,