DotJson
Terrarian
First, disclaimer, I'm talking about specific NPC "relations", not the overcrowding thing, the latter is fine with me.
The problem with the former is the simple fact that by having a 2 or 3-room house in each biome, you can easily cheat the system and with no effort achieve maximum happiness for any given NPC on demand. All you need is to set the NPC's housing in their preferred biome and surround them with NPCs liked/loved by them. Then — magic! — as soon as the chosen NPC moves into the room, even if their new neighbors aren't present, the housing assignment itself counts as an NPC being "nearby", so the chosen NPC has the maximum currently achieveable Happiness.
The problem is not that this "trick" is easy to perform, IMO the problem is that it's worth performing at all. By that I mean that NPC preferences (as you can judge from the updated Wiki page) are constructed in such a way that there is no "stable state", by which I mean that you can't have maximum Happiness for all NPCs at once.
Take, for example, the Goblin Tinkerer and the Mechanic (the former's Happiness affects the cost of Reforging, btw). They love each other, but the Goblin Tinkerer's preferred biome is the Underground, and the Mechanic's is the Snow. So you clearly cannot satisfy both biome conditions if you plan for them to live together, but you can switch them both together back and forth between Snow and Underground when you need a discount from one or another.
And yes, I understand that maybe that was actually the point: that you need to choose what NPCs to "prefer" over the other, but currently the concept doesn't work, as you can see. My only idea of how to make it work is to simply take a "fee" for each housing re-assignment so players would not abuse it.
My other proposed solution is to simply define an "ideal" housing plan where everyone has maximum happiness. To achieve this NPC preferences need to be adjusted so that "likes" and "dislikes" are mutual and NPCs who "like" each other prefer the same biome.
What do you think of all this? I honestly just want a system where there are no ugly workarounds that just beg to be used.
The problem with the former is the simple fact that by having a 2 or 3-room house in each biome, you can easily cheat the system and with no effort achieve maximum happiness for any given NPC on demand. All you need is to set the NPC's housing in their preferred biome and surround them with NPCs liked/loved by them. Then — magic! — as soon as the chosen NPC moves into the room, even if their new neighbors aren't present, the housing assignment itself counts as an NPC being "nearby", so the chosen NPC has the maximum currently achieveable Happiness.
The problem is not that this "trick" is easy to perform, IMO the problem is that it's worth performing at all. By that I mean that NPC preferences (as you can judge from the updated Wiki page) are constructed in such a way that there is no "stable state", by which I mean that you can't have maximum Happiness for all NPCs at once.
Take, for example, the Goblin Tinkerer and the Mechanic (the former's Happiness affects the cost of Reforging, btw). They love each other, but the Goblin Tinkerer's preferred biome is the Underground, and the Mechanic's is the Snow. So you clearly cannot satisfy both biome conditions if you plan for them to live together, but you can switch them both together back and forth between Snow and Underground when you need a discount from one or another.
And yes, I understand that maybe that was actually the point: that you need to choose what NPCs to "prefer" over the other, but currently the concept doesn't work, as you can see. My only idea of how to make it work is to simply take a "fee" for each housing re-assignment so players would not abuse it.
My other proposed solution is to simply define an "ideal" housing plan where everyone has maximum happiness. To achieve this NPC preferences need to be adjusted so that "likes" and "dislikes" are mutual and NPCs who "like" each other prefer the same biome.
What do you think of all this? I honestly just want a system where there are no ugly workarounds that just beg to be used.