Retire procedurally generated houses and basements #36075
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
SUMMARY: Infrastructure "Retire procedurally generated houses and basements"
Purpose of change
We've got enough hand-crafted houses and basements, as well as the infrastructure to do json-powered variations with nested mapgen and multi-OMT city_buildings, that there is no need to keep the procedurally generated ones.
Fixes #11632
Fixes #21915
Describe the solution
house_base
overmap terrain and migrate them tohouse
--they had the same mapgen ashouse
and were only used as part of thehouse_base
city_building, where ahouse
entry produces the same resultDescribe alternatives you've considered
I'd like to deprecate the city generation code that takes a house and randomly attaches a basement to it, in favor of utilizing the ability to define the different z-levels (roof, house levels, basement) in a
city_building
special and putting that special in the list of houses that can be placed in the city.The problem with the current approach is that when we take a hand-crafted house and a hand-crafted basement that are pulled from random pools and smash them together, the stairs sometimes don't line up (or the ground level may not even have stairs). There is additional code that attempts to place stairs in houses, but it'll just plop them in non-sensical locations.
Hand in hand with removing the code that combines random floors and basements, I'd like to remove the code that places stairs in houses going down to basements because as mentioned before, it's nonsensical. Once we do that, we can also remove the game option that will force stairs to be placed even if the location is invalid.
Testing
Spawned a bunch of worlds and ran around in them, checking out the houses. Loaded some worlds prior to the change and also checked the migration of the house_base.
Additional context
Because this retires an entire class of mapgen that was quite common, it can shift the balance a fair amount terms of what sort of furniture, terrain, items, and monsters are present. I did not make any attempt to go through all of the house and basement mapgens and evaluate this.
I also did not attempt to adjust the weights of any of the "house" mapgen. The "builtin" versions would have had a defaulted weight of 1000, where as many of the hand-crafted ones range from 300 down to 50. As a result, all of those are now going to be more likely when placing the "house" mapgen. We'll probably want to consider reducing the weight of the "house" entry in the regional settings so that other variations are more prevalent.