Obj_AudienceInit: Improve color handling

- Catch all invalid colors with default randomisation
- Catch invalid colors more thoroughly
- Report typos to the user
This commit is contained in:
toaster 2023-04-21 21:06:21 +01:00
parent 2f8b8cf532
commit c7cc730c35

View file

@ -123,7 +123,7 @@ Obj_AudienceInit
if (mthing->stringargs[1] != NULL) if (mthing->stringargs[1] != NULL)
{ {
if (!strcmp("Random", mthing->stringargs[1])) if (!stricmp("Random", mthing->stringargs[1]))
{ {
colorpick = FOLLOWERCOLOR_MATCH; colorpick = FOLLOWERCOLOR_MATCH;
} }
@ -135,7 +135,8 @@ Obj_AudienceInit
numref = 0; numref = 0;
while (tok && numref < MAXHEADERFOLLOWERS) while (tok && numref < MAXHEADERFOLLOWERS)
{ {
tempreflist[numref++] = R_GetColorByName(tok); if ((tempreflist[numref++] = R_GetColorByName(tok)) == SKINCOLOR_NONE)
CONS_Alert(CONS_WARNING, "Mapthing %s: Follower color \"%s\" is invalid!\n", sizeu1(mthing-mapthings), tok);
tok = strtok(NULL, " "); tok = strtok(NULL, " ");
} }
@ -148,13 +149,15 @@ Obj_AudienceInit
} }
} }
if (colorpick == SKINCOLOR_NONE) if (colorpick == SKINCOLOR_NONE
|| (colorpick >= numskincolors
&& colorpick != FOLLOWERCOLOR_MATCH
&& colorpick != FOLLOWERCOLOR_OPPOSITE))
{ {
colorpick = followers[followerpick].defaultcolor; colorpick = followers[followerpick].defaultcolor;
} }
if (colorpick == FOLLOWERCOLOR_MATCH if (colorpick >= numskincolors)
|| colorpick == FOLLOWERCOLOR_OPPOSITE)
{ {
colorpick = P_RandomKey(PR_RANDOMAUDIENCE, numskincolors-1)+1; colorpick = P_RandomKey(PR_RANDOMAUDIENCE, numskincolors-1)+1;
} }