/** Look up a player in the player list htab (or by dbref). * \param name name of player to find. * \return dbref of player, or NOTHING. */ dbref lookup_player(const char *name) { dbref d; if (!name || !*name) return NOTHING; if (*name == NUMBER_TOKEN) { d = parse_objid(name); if (GoodObject(d) && IsPlayer(d)) return d; else return NOTHING; } if (*name == LOOKUP_TOKEN) name++; return lookup_player_name(name); }
/* * Read hostility information * * Note that this function is responsible for deleting stale entries */ static errr rd_hostilities(player_type *p_ptr) { hostile_type *h_ptr; int i; s32b id; u16b tmp16u; start_section_read("hostilities"); /* Read number */ tmp16u = read_int("num"); /* Read available ID's */ for (i = 0; i < tmp16u; i++) { /* Read next ID */ id = read_int("id"); /* Check for stale player */ if (id > 0 && !lookup_player_name(id)) continue; /* Check for stale party */ if (id < 0 && !parties[0 - id].num) continue; /* Create node */ MAKE(h_ptr, hostile_type); h_ptr->id = id; /* Add to chain */ h_ptr->next = p_ptr->hostile; p_ptr->hostile = h_ptr; } end_section_read("hostilities"); /* Success */ return (0); }