Give crafts unique ids in the form of a type+id tuple. Since we can now safely hold "weak pointers" to crafts, let UFOs refer to their killer by unique id, instead of a pointer that may be deallocated or reused
Provide a savegame method to look up a craft by its unique id, it could always come in handy
typedef std::pair<std::string, int> CraftId
typedef std::pair<std::string, int> CraftId