| 850 | } |
| 851 | |
| 852 | int |
| 853 | randgend(int rolenum, int racenum) |
| 854 | { |
| 855 | int i, n = 0; |
| 856 | |
| 857 | /* Count the number of valid genders */ |
| 858 | for (i = 0; i < ROLE_GENDERS; i++) |
| 859 | if (roles[rolenum].allow & races[racenum].allow & genders[i].allow |
| 860 | & ROLE_GENDMASK) |
| 861 | n++; |
| 862 | |
| 863 | /* Pick a random gender */ |
| 864 | if (n) |
| 865 | n = rn2(n); |
| 866 | for (i = 0; i < ROLE_GENDERS; i++) |
| 867 | if (roles[rolenum].allow & races[racenum].allow & genders[i].allow |
| 868 | & ROLE_GENDMASK) { |
| 869 | if (n) |
| 870 | n--; |
| 871 | else |
| 872 | return i; |
| 873 | } |
| 874 | |
| 875 | /* This role/race has no permitted genders? */ |
| 876 | return rn2(ROLE_GENDERS); |
| 877 | } |
| 878 | |
| 879 | int |
| 880 | str2gend(const char *str) |
no test coverage detected