MCPcopy Create free account
hub / github.com/NetHack/NetHack / rigid_role_checks

Function rigid_role_checks

src/role.c:1234–1281  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1232}
1233
1234void
1235rigid_role_checks(void)
1236{
1237 int tmp;
1238
1239 /* Some roles are limited to a single race, alignment, or gender and
1240 * calling this routine prior to XXX_player_selection() will help
1241 * prevent an extraneous prompt that actually doesn't allow
1242 * you to choose anything further. Note the use of PICK_RIGID which
1243 * causes the pick_XX() routine to return a value only if there is one
1244 * single possible selection, otherwise it returns ROLE_NONE.
1245 *
1246 */
1247 if (flags.initrole == ROLE_RANDOM) {
1248 /* If the role was explicitly specified as ROLE_RANDOM
1249 * via -uXXXX-@ or OPTIONS=role:random then choose the role
1250 * in here to narrow down later choices.
1251 */
1252 flags.initrole = pick_role(flags.initrace, flags.initgend,
1253 flags.initalign, PICK_RANDOM);
1254 if (flags.initrole < 0)
1255 flags.initrole = randrole_filtered();
1256 }
1257 if (flags.initrace == ROLE_RANDOM
1258 && (tmp = pick_race(flags.initrole, flags.initgend,
1259 flags.initalign, PICK_RANDOM)) != ROLE_NONE)
1260 flags.initrace = tmp;
1261 if (flags.initalign == ROLE_RANDOM
1262 && (tmp = pick_align(flags.initrole, flags.initrace,
1263 flags.initgend, PICK_RANDOM)) != ROLE_NONE)
1264 flags.initalign = tmp;
1265 if (flags.initgend == ROLE_RANDOM
1266 && (tmp = pick_gend(flags.initrole, flags.initrace,
1267 flags.initalign, PICK_RANDOM)) != ROLE_NONE)
1268 flags.initgend = tmp;
1269
1270 if (flags.initrole != ROLE_NONE) {
1271 if (flags.initrace == ROLE_NONE)
1272 flags.initrace = pick_race(flags.initrole, flags.initgend,
1273 flags.initalign, PICK_RIGID);
1274 if (flags.initalign == ROLE_NONE)
1275 flags.initalign = pick_align(flags.initrole, flags.initrace,
1276 flags.initgend, PICK_RIGID);
1277 if (flags.initgend == ROLE_NONE)
1278 flags.initgend = pick_gend(flags.initrole, flags.initrace,
1279 flags.initalign, PICK_RIGID);
1280 }
1281}
1282
1283boolean
1284setrolefilter(const char *bufp)

Callers 12

RandomizeMethod · 0.85
plselRandomizeFunction · 0.85
curses_choose_characterFunction · 0.85
winmisc.cFile · 0.85
amii_player_selectionFunction · 0.85
genl_player_setupFunction · 0.85
plsel_startmenuFunction · 0.85
gnome_player_selectionFunction · 0.85
Gem_player_selectionFunction · 0.85

Calls 5

pick_roleFunction · 0.85
randrole_filteredFunction · 0.85
pick_raceFunction · 0.85
pick_alignFunction · 0.85
pick_gendFunction · 0.85

Tested by

no test coverage detected