warning fix

The new code provoked several warnings; this fixes one of them.
Moving the declaration of 'rolecount' would have been sufficient,
but I've gone another way.
This commit is contained in:
PatR
2019-01-29 15:00:07 -08:00
parent ccc14a038b
commit 1b49f60ded
3 changed files with 18 additions and 13 deletions

View File

@@ -2122,7 +2122,7 @@ E boolean FDECL(validrole, (int));
E boolean FDECL(validrace, (int, int)); E boolean FDECL(validrace, (int, int));
E boolean FDECL(validgend, (int, int, int)); E boolean FDECL(validgend, (int, int, int));
E boolean FDECL(validalign, (int, int, int)); E boolean FDECL(validalign, (int, int, int));
E int NDECL(randrole); E int FDECL(randrole, (BOOLEAN_P));
E int FDECL(randrace, (int)); E int FDECL(randrace, (int));
E int FDECL(randgend, (int, int)); E int FDECL(randgend, (int, int));
E int FDECL(randalign, (int, int)); E int FDECL(randalign, (int, int));

View File

@@ -2095,15 +2095,13 @@ aligntyp alignment;
if (!Hallucination) if (!Hallucination)
return align_gname(alignment); return align_gname(alignment);
/* Count the roles, so that we can pick one at random. */ /* Some roles (Priest) don't have a pantheon unless we're playing as
int rolecount = 0; that role, so keep trying until we get a role which does have one.
while (roles[rolecount].filecode) [If playing a Priest, the current pantheon will be twice as likely
rolecount++; to get picked as any of the others. That's not significant enough
to bother dealing with.] */
/* The priest may not have initialized god names. If this is the
case, and we roll priest, we need to try again. */
do do
which = rn2_on_display_rng(rolecount); which = randrole(TRUE);
while (!roles[which].lgod); while (!roles[which].lgod);
switch (rn2_on_display_rng(9)) { switch (rn2_on_display_rng(9)) {

View File

@@ -787,9 +787,16 @@ int rolenum;
} }
int int
randrole() randrole(for_display)
boolean for_display;
{ {
return rn2(SIZE(roles) - 1); int res = SIZE(roles) - 1;
if (for_display)
res = rn2_on_display_rng(res);
else
res = rn2(res);
return res;
} }
STATIC_OVL int STATIC_OVL int
@@ -805,7 +812,7 @@ randrole_filtered()
&& ok_gend(i, ROLE_NONE, ROLE_RANDOM, ROLE_NONE) && ok_gend(i, ROLE_NONE, ROLE_RANDOM, ROLE_NONE)
&& ok_align(i, ROLE_NONE, ROLE_NONE, ROLE_RANDOM)) && ok_align(i, ROLE_NONE, ROLE_NONE, ROLE_RANDOM))
set[n++] = i; set[n++] = i;
return n ? set[rn2(n)] : randrole(); return n ? set[rn2(n)] : randrole(FALSE);
} }
int int
@@ -2088,7 +2095,7 @@ role_init()
if (flags.pantheon == -1) { /* new game */ if (flags.pantheon == -1) { /* new game */
flags.pantheon = flags.initrole; /* use own gods */ flags.pantheon = flags.initrole; /* use own gods */
while (!roles[flags.pantheon].lgod) /* unless they're missing */ while (!roles[flags.pantheon].lgod) /* unless they're missing */
flags.pantheon = randrole(); flags.pantheon = randrole(FALSE);
} }
if (!urole.lgod) { if (!urole.lgod) {
urole.lgod = roles[flags.pantheon].lgod; urole.lgod = roles[flags.pantheon].lgod;