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

Function X11_player_selection_randomize

win/X11/winmisc.c:474–547  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

472}
473
474static void
475X11_player_selection_randomize(void)
476{
477 int nrole = plsel_n_roles;
478 int nrace = plsel_n_races;
479 int ro, ra, al, gend;
480 boolean choose_race_first;
481 boolean picksomething = (flags.initrole == ROLE_NONE
482 || flags.initrace == ROLE_NONE
483 || flags.initgend == ROLE_NONE
484 || flags.initalign == ROLE_NONE);
485
486 if (flags.randomall && picksomething) {
487 if (flags.initrole == ROLE_NONE)
488 flags.initrole = ROLE_RANDOM;
489 if (flags.initrace == ROLE_NONE)
490 flags.initrace = ROLE_RANDOM;
491 if (flags.initgend == ROLE_NONE)
492 flags.initgend = ROLE_RANDOM;
493 if (flags.initalign == ROLE_NONE)
494 flags.initalign = ROLE_RANDOM;
495 }
496
497 rigid_role_checks();
498
499 /* Randomize race and role, unless specified in config */
500 ro = flags.initrole;
501 if (ro == ROLE_NONE || ro == ROLE_RANDOM) {
502 ro = rn2(nrole);
503 }
504 ra = flags.initrace;
505 if (ra == ROLE_NONE || ra == ROLE_RANDOM) {
506 ra = rn2(nrace);
507 if (flags.initrace != ROLE_RANDOM) {
508 }
509 }
510
511 /* make sure we have a valid combination, honoring
512 the users request if possible. */
513 choose_race_first = FALSE;
514 if (flags.initrace >= 0 && flags.initrole < 0) {
515 choose_race_first = TRUE;
516 }
517
518 while (!validrace(ro, ra)) {
519 if (choose_race_first) {
520 ro = rn2(nrole);
521 } else {
522 ra = rn2(nrace);
523 }
524 }
525
526 gend = flags.initgend;
527 if (gend == ROLE_NONE) {
528 gend = rn2(ROLE_GENDERS);
529 }
530 while (!validgend(ro, ra, gend)) {
531 gend = rn2(ROLE_GENDERS);

Callers 3

plsel_randomizeFunction · 0.85
winmisc.cFile · 0.85

Calls 7

rigid_role_checksFunction · 0.85
rn2Function · 0.85
validraceFunction · 0.85
validgendFunction · 0.85
validalignFunction · 0.85
i2xtpFunction · 0.85
plsel_set_sensitivitiesFunction · 0.85

Tested by

no test coverage detected