diff --git a/src/common/kernel/region.c b/src/common/kernel/region.c index ebae5c232..c8738c0bb 100644 --- a/src/common/kernel/region.c +++ b/src/common/kernel/region.c @@ -957,7 +957,7 @@ terraform_region(region * r, const terrain_type * terrain) i-=srd->value; srd=srd->next; } - setluxuries(r, srd->type); + if (srd->type) setluxuries(r, srd->type); while (srd->next!=NULL) srd=srd->next; srd->next=trash; trash = nb; diff --git a/src/common/modules/autoseed.c b/src/common/modules/autoseed.c index 33df6c6c1..48a493e8e 100644 --- a/src/common/modules/autoseed.c +++ b/src/common/modules/autoseed.c @@ -91,12 +91,10 @@ recurse_regions(region *r, region_list **rlist, boolean(*fun)(const region *r)) } } -static int maxluxuries = 0; - static boolean f_nolux(const region * r) { - if (r->land && count_demand(r) != maxluxuries) return true; + if (r->land && count_demand(r) != get_maxluxuries()) return true; return false; } @@ -107,10 +105,9 @@ fix_demand(region *r) static const struct luxury_type **mlux = 0, ** ltypes; const luxury_type *sale = NULL; int maxlux = 0; + int maxluxuries = get_maxluxuries(); - if (maxluxuries==0) for (sale=luxurytypes;sale;sale=sale->next) { - ++maxluxuries; - } + if (maxluxuries==0) return 0; recurse_regions(r, &rlist, f_nolux); if (mlux==0) { int i = 0; @@ -162,14 +159,15 @@ fix_demand(region *r) } } while (j!=i); } - maxlux=2; + maxlux = 2; } for (rl=rlist;rl;rl=rl->next) { region * r = rl->data; if (!fval(r, RF_CHAOTIC)) { log_warning(("fixing demand in %s\n", regionname(r, NULL))); } - setluxuries(r, mlux[rand() % maxlux]); + sale = mlux[rand() % maxlux]; + if (sale) setluxuries(r, sale); } while (rlist) { rl = rlist->next; diff --git a/src/mapper/map_modify.c b/src/mapper/map_modify.c index 22956b473..e7661f01b 100644 --- a/src/mapper/map_modify.c +++ b/src/mapper/map_modify.c @@ -205,7 +205,7 @@ block_create(short x1, short y1, int size, char chaotisch, int special, const te } else { terraform(r, newblock[x][y]); } - if (r->land) setluxuries(r, sale); + if (r->land && sale) setluxuries(r, sale); } } }