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

Function plselRandomize

win/win32/mhdlg.c:909–985  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

907}
908
909static boolean plselRandomize(plsel_data_t * data)
910{
911 int role, race, gender, alignment;
912 boolean fully_specified = TRUE;
913
914 // restore back to configuration settings
915 flags.initrole = data->config_role;
916 flags.initrace = data->config_race;
917 flags.initgend = data->config_gender;
918 flags.initalign = data->config_alignment;
919
920 if (!flags.randomall) {
921 if(flags.initrole == ROLE_NONE || flags.initrace == ROLE_NONE
922 || flags.initgend == ROLE_NONE || flags.initalign == ROLE_NONE)
923 fully_specified = FALSE;
924 }
925
926 if (flags.initrole == ROLE_NONE)
927 flags.initrole = ROLE_RANDOM;
928 if (flags.initrace == ROLE_NONE)
929 flags.initrace = ROLE_RANDOM;
930 if (flags.initgend == ROLE_NONE)
931 flags.initgend = ROLE_RANDOM;
932 if (flags.initalign == ROLE_NONE)
933 flags.initalign = ROLE_RANDOM;
934
935 rigid_role_checks();
936
937 role = flags.initrole;
938 race = flags.initrace;
939 gender = flags.initgend;
940 alignment = flags.initalign;
941
942 assert(role != ROLE_RANDOM && role != ROLE_NONE);
943 assert(race != ROLE_RANDOM && race != ROLE_NONE);
944 assert(gender != ROLE_RANDOM && gender != ROLE_NONE);
945 assert(alignment != ROLE_RANDOM && alignment != ROLE_NONE);
946
947 if (!ok_role(role, race, gender, alignment)) {
948 fully_specified = FALSE;
949 flags.initrole = ROLE_RANDOM;
950 }
951
952 if (!ok_race(role, race, gender, alignment)) {
953 fully_specified = FALSE;
954 flags.initrace = ROLE_RANDOM;
955 }
956
957 if (!ok_gend(role, race, gender, alignment)) {
958 fully_specified = FALSE;
959 flags.initgend = ROLE_RANDOM;
960 }
961
962 if(!ok_align(role, race, gender, alignment))
963 {
964 fully_specified = FALSE;
965 flags.initalign = ROLE_RANDOM;
966 }

Callers 3

plselInitDialogFunction · 0.85
PlayerSelectorDlgProcFunction · 0.85

Calls 5

rigid_role_checksFunction · 0.85
ok_roleFunction · 0.85
ok_raceFunction · 0.85
ok_gendFunction · 0.85
ok_alignFunction · 0.85

Tested by

no test coverage detected