Sphere converts numbers, strings, etc. to boolean but will throw if an object is passed (normally truthy). For legacy support I don't think it's worth it to go out of my way to match those semantics exactly...
Jesus, Kafka's Revenge, huh? Good luck getting that abomination to run perfectly. It had issues even between Sphere versions.
As a suggestion, could you integrate the terminal module into the engine itself so it wouldn't be affected by things like loops and normal keyboard input?
Also, I'm not sure if it was like this in the original engine as well, but is it not possible to get a peron's spriteset's filename by doing GetPersonSpriteset(person_name).filename?