MCPcopy Index your code
hub / github.com/NetHack/NetHack / Randomize

Method Randomize

win/Qt/qt_plsel.cpp:451–543  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

449}
450
451void NetHackQtPlayerSelector::Randomize()
452{
453 int nrole = role->rowCount();
454 int nrace = race->rowCount();
455
456 boolean picksomething = (flags.initrole == ROLE_NONE
457 || flags.initrace == ROLE_NONE
458 || flags.initgend == ROLE_NONE
459 || flags.initalign == ROLE_NONE);
460
461 if (flags.randomall && picksomething) {
462 if (flags.initrole == ROLE_NONE)
463 flags.initrole = ROLE_RANDOM;
464 if (flags.initrace == ROLE_NONE)
465 flags.initrace = ROLE_RANDOM;
466 if (flags.initgend == ROLE_NONE)
467 flags.initgend = ROLE_RANDOM;
468 if (flags.initalign == ROLE_NONE)
469 flags.initalign = ROLE_RANDOM;
470 }
471
472 rigid_role_checks();
473
474 // Randomize race and role, unless specified in config
475 int ro = flags.initrole;
476 if (ro == ROLE_NONE || ro == ROLE_RANDOM) {
477 ro = rn2(nrole);
478 if (flags.initrole != ROLE_RANDOM) {
479 fully_specified_role = false;
480 }
481 }
482 int ra = flags.initrace;
483 if (ra == ROLE_NONE || ra == ROLE_RANDOM) {
484 ra = rn2(nrace);
485 if (flags.initrace != ROLE_RANDOM) {
486 fully_specified_role = false;
487 }
488 }
489
490 // make sure we have a valid combination, honoring
491 // the user's request if possible.
492 bool choose_race_first;
493#ifdef QT_CHOOSE_RACE_FIRST
494 choose_race_first = true;
495 if (flags.initrole >= 0 && flags.initrace < 0) {
496 choose_race_first = false;
497 }
498#else
499 choose_race_first = false;
500 if (flags.initrace >= 0 && flags.initrole < 0) {
501 choose_race_first = true;
502 }
503#endif
504 while (!validrace(ro,ra)) {
505 if (choose_race_first) {
506 ro = rn2(nrole);
507 if (flags.initrole != ROLE_RANDOM) {
508 fully_specified_role = false;

Callers

nothing calls this directly

Calls 5

rigid_role_checksFunction · 0.85
rn2Function · 0.85
validraceFunction · 0.85
validgendFunction · 0.85
validalignFunction · 0.85

Tested by

no test coverage detected