When I just started out my plan was to fix a lot of the NPC bugs. That kinda burned me out so much that I didn’t develop on cata for quite some time.
The NPC code was/is a mess.
For anybody interested here is my note/todo log from a while back (not all of it correct, as it is just random notes).
Give player a npc ID.
Attach player ID to missions.
On player death reset any missions with that player id.
Currently a mission can only be assigned once. Which is a bit silly.
Fix the npctalk.cpp line 1607 color coding stuff, it should remove the first char of the response. (And this should be documented).
Have all shelters start with an NPC, and the LMOE spawn with an agressive npc.
Add a variable to npcs that show them on the overmap or not.
Fix npcs stealing money by mugging.
omz is supposed to be the zlevel value. Make it check that
Overmap.cpp line 1333 legend boolean.
Make the kill list also keep the npc kills
newly spawned npcs have 999 999 targets which is odd
Markedfordeath npcs do not drop all their equip nor a corpse.
NPCS might be immune to explosions and traps.
Spawning a lot of debug npcs crashes. on talk iirc
Npcs move strangely between overmaps. Creating a global npc list would fix this.
Muggers do not notice you in a car. It should just attack instead.
USB (and perhaps other) missions only look for the north variants of buildings.
Make the ‘is this a safe place’ code better.
After accepting a mission, the final ‘a’ remark loops back to the ‘do you have a mission for me’ question. Which is strange.
There was a shelter npc, with a save with multiple character that allowed free training.
Check the way the shelter npc follows you underground.
Check if autosaving saves the npcs correctly. (Probably the shifting of the maps, should load them before the player has had a turn to move).
“DEBUG: NPC didn’t use its moves. Action 17. Turning on debug mode.” should mention debug messages not mode.
NPC trading, there is one specific char tree where you can return to the normal window after trading. But that has a display bug where some gui elements are not printed again.
Every time I tried fixing something with NPC’s I kept running into more and more bugs. (Most of the times touching a lot of other code: “Probably the shifting of the maps, should load them before the player has had a turn to move” for example, points to the old system which saved monsters and NPC’s strangely (it was pretty visible when teleporting around using the debug mode, stuff could be loaded from nowhere, next to you after a few turns).
It might seem like it is not going anywhere, but there just was a lot of groundwork that had to be done. (And remember that the codebase is large and getting larger every day, not all devs know everything).
That said, I do agree there is a lot of stuff added that is not that valuable, but don’t forget that keeps our motivation high. Stuff like this: https://github.com/CleverRaven/Cataclysm-DDA/pull/6182 motivated me to do more work later. (I was actually grinning quite a lot IRL).
And like always, people who complain about stuff not being added. Could you help us? Please try and update the wiki more. There just is not enough time and motivation in each day to do everything. Or help out at the bug forum. Try to reproduce bugs people mention, suggest workarounds, provide savegames etc. (And yes, at times these savegames will not be used, and the effort is for nothing. Sorry about that).