Yeah, remove npc does that. And marked for death calls die (which cleans it up) on overmap->active load. And other npcs are processed by cleanup dead (which is called when monmove is called).

For some reason marked for death npcs didn't drop their stuff when they got loaded when I tested it. (By nuking the location. Have no idea why else marked for death is called. (I just noticed I called the same load_npc() code twice. Will remove duplicate code) checking for more places where marked for death is set.