add non-player character framework