That's cool! I think I'm going to have to log onto your server some time just to see all the neat things you're doing
The one comment I have is that it might be better to add a function isGaurd() to the NPC class. This function would just do what your if clause does right now (strstr(getName(), "Gaurd") || ...), but could be easily modified in the future if a gaurd field is added or something.