From 98be298d724f141b75444e714eca82bf546a30f0 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Tue, 7 Nov 2017 19:35:21 +0100 Subject: [PATCH] reduce monster spawning with configuration settings. --- conf/e2/config.json | 1 + src/monsters.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/conf/e2/config.json b/conf/e2/config.json index 5cbe4e378..5d29cd1f5 100644 --- a/conf/e2/config.json +++ b/conf/e2/config.json @@ -18,6 +18,7 @@ "modules.wormhole": true, "modules.iceberg": true, "modules.volcano": true, + "monsters.spawn.chance": 50, "entertain.base": 0, "entertain.perlevel": 20, "taxing.perlevel": 20, diff --git a/src/monsters.c b/src/monsters.c index 115759d29..9079b29d6 100644 --- a/src/monsters.c +++ b/src/monsters.c @@ -874,19 +874,27 @@ void spawn_dragons(void) { region *r; faction *monsters = get_or_create_monsters(); + int minage = config_get_int("monsters.spawn.min_age", 100); + int spawn_chance = 100 * config_get_int("monsters.spawn.chance", 100); + if (spawn_chance <= 0) { + /* monster spawning disabled */ + return; + } for (r = regions; r; r = r->next) { unit *u; - + if (r->age < minage) { + continue; + } if (fval(r->terrain, SEA_REGION)) { - if (rng_int() % 10000 < 1) { + if (rng_int() % spawn_chance < 1) { u = spawn_seaserpent(r, monsters); } } else if ((r->terrain == newterrain(T_GLACIER) || r->terrain == newterrain(T_SWAMP) || r->terrain == newterrain(T_DESERT)) - && rng_int() % 10000 < (5 + 100 * chaosfactor(r))) { + && rng_int() % spawn_chance < (5 + 100 * chaosfactor(r))) { if (chance(0.80)) { u = create_unit(r, monsters, nrand(60, 20) + 1, get_race(RC_FIREDRAGON), 0, NULL, NULL); }