Ok.. so I took a stab at improving .show() method and the portraits tonight. It went slow for numerous reasons but I believe that there is a significant progress!
1) Auto-Mood finally works properly!!!
- It does no longer mess up jobs!
Problem here was a completely flawed approach, I tried just adding mood to the tags lookup but if that did not work with all tags and started removing them one by one, it would end up with just one or two tags and the correct mood tag, but that no longer reflected the job at all

even when there was an exact match available (for example with neutral instead of happy).
- Now that is fixed and auto-tags are added like this:
- If mood tag is provided with normal tags request, auto-mood is disabled.
- add_mood=False also disables the auto-mood.
- When enabled, game will interpolate the mood from joy (and later a lot of other factors I expect) and try to do the following:
*Look for any tag and a mood tag before falling back to just any tag under
"any" type
*Look for a perfect match of all tags + moodtag otherwise
*Look for the very last possible combination of tags adding moodtag there as well
*Final fallbacks such as "profile" and "last_default" will also be tried in combination with moodtag before falling back to just them
- Moods are now being updated in real time, in the past that could only happen after Next Day.
2) Auto-Mood has been added to Dialogue Window Portrait window, also to be updated in real time.
- In order to override the Portrait:
$ char.override_portrait("profile", "winter", exclude=["indoors"])
This should cause a tiny profile pic to appear instead of a portrait one.
Always remember to restore normal operations with:
$ char.restore_portrait()
Or it will be stuck

3) I've added a new check to the show method to weed out all calls without size parameters. When/if you get errors, I'll just need the first part to know what went wrong so don't post full traceback.