It appears that the renovation tab subheaders ("reno_tab_floors", "reno_tab_plantholders", etc.) are contained in the list of available recipes, but have no corresponding entries in STRINGS.NAMES. The instantiation function for blueprints is set to the randomised MakeAnyBlueprint() rather than the neutral fn(), which means that every time a blueprint is spawned, a random recipe unknown to the player is chosen, and if that recipe happens to be one of the renovation tab subheaders, the name lookup fails and an error occurs when attempting to append " Blueprint" to the nil value. (DLC0003/scripts/prefabs/blueprint.lua, line 79)
I discovered this when I loaded a Hamlet game that contained several blueprints brought over from a linked RotG survival world. On loading, the blueprints are first spawned with random recipes, before the saved values are restored to them, which means that every blueprint existing in the saved game has a chance of causing this error. Additionally, the more real recipes are known to the player, the higher the chance that one of the subheaders is randomly chosen.
The subheader "recipes" should be removed from the list of recipes. If they need to be there for some other reason, MakeAnyBlueprint() should be adjusted to filter them out along with the known recipes, when the list of unknown recipes is constructed.
As an aside, MakeAnyBlueprint() appends the literal string " Blueprint" to the looked-up name, which surely should be STRINGS.NAMES.BLUEPRINT.
1. Start a RotG and Hamlet compatible game. 2. Collect blueprints in the survival world. 3. Move to Hamlet world, bringing the blueprints over. 4. Save game. 5. Load game. On loading, each blueprint has a chance of causing an error, dependent on the number of recipes known by the player.
-
1
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now