+static int
+make_lchr_index(struct chr_index chridx[], int tlev)
+{
+ struct natstr *natp = getnatp(player->cnum);
+ int i, n;
+
+ n = 0;
+ for (i = 0; lchr[i].l_name; i++) {
+ if (!lchr[i].l_name[0])
+ continue;
+ if (lchr[i].l_tech > tlev)
+ continue;
+ chridx[n].type = i;
+ chridx[n].tech = lchr[i].l_tech;
+ n++;
+ }
+ if (natp->nat_flags & NF_TECHLISTS)
+ qsort(chridx, n, sizeof(*chridx), chr_index_cmp);
+ return n;
+}
+
+static int
+make_nchr_index(struct chr_index chridx[], int tlev)
+{
+ struct natstr *natp = getnatp(player->cnum);
+ int i, n;
+
+ n = 0;
+ for (i = 0; nchr[i].n_name; i++) {
+ if (!nchr[i].n_name[0])
+ continue;
+ if (nchr[i].n_tech > tlev)
+ continue;
+ chridx[n].type = i;
+ chridx[n].tech = nchr[i].n_tech;
+ n++;
+ }
+ if (natp->nat_flags & NF_TECHLISTS)
+ qsort(chridx, n, sizeof(*chridx), chr_index_cmp);
+ return n;