I did a little bit of bonus work after my update last night... and I'm going to let it count for today. I added a bit of code that sends npcs who are at less than 50 endurance to go looking for a bed to sleep in. They sleep there until the endurance is at maximum again, and then they wake up. This was pretty simple to code - 4 lines of python and a copied behavior tree - but there are some issues with multiple conflicting jobs, and the boundary between the python code and the behavior tree. I have all the AI tools I need, but putting them together is a total mess! While sleeping in the bed, the npc is still actually trying to do other things, he just doesn't move because I had programmed the bed to trap you in it when you are sleeping. If someone else is in the bed he still considers it a usable bed and keeps trying to use it. If you are in the bed and an npc wants to drag you somewhere he doesn't know to wake you up first.
All fixable issues, but it's amazing how so few interactions can make the complexity spiral out of control. Do I really want to be having to debug the giant matrix of interactions every time I add a new one? Is there a way I can develop the ai that ensures that it will most likely work with what's already there without endless testing?