Last game I did dynamic spawn which was great for the first while, but once I’d become established I wanted to try my hand at clearing a city. I began looking into the possibility of switching a current game from dynamic to static. It seems that it would be difficult to do, but I think I’ve found a way to adjust things to make a hybrid system.
Essentially, if a city is found in the first few days, it would be dynamic. If it’s discovered later, it would be a static spawn city. I think the code changes wouldn’t be too bad, with one possible exception. Here’s what changes I think would be necessary:
In overmap::generate
call place_mongroups to only place wildlife groups.
In map::generate
if static:
call drawmap with calculated density (as it is now)
if dynamic:
check the overmap’s list of mongroups for one of type ZOMBIE doesn’t exist for the city center. (This could be difficult to locate accurately.)
if the group doesn’t exist, add one.
call drawmap with 0 density
if hybrid:
if turn > days(2):
see dynamic above
else
see static above
There are some edge cases like discovering part of a city early and then coming back later, which would have monsters from both spawning techniques active. But some tweaking of the ifs in map::generate can close up those holes.
Also I’d also suggest that game::spawn_mon be changed to reduce the mongroup population relative to the difficulty of the spawned monster. So a Hulk counts for about 16 regular zombies. This would also prevent the population from being reduced by spawning null monsters in the spawn free first hour.
I just wanted to see if it could be done. I’m not sure if it’s a good idea, or just compounding the problems currently plaguing Cata with a third spawn system. Lore wise it works out nicely, in the first few days the dead are still rising but by day 3 any viable corpses are already walking around. Sadly I don’t have the time to put together a proper implementation of this or I’d offer it up on git.