diff --git a/src/deh_soc.c b/src/deh_soc.c index b54fe9bcb..5da9a4173 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -1166,17 +1166,24 @@ void readlevelheader(MYFILE *f, char * name) else if (fastcmp(word, "MUSIC")) { if (fastcmp(word2, "NONE")) + { mapheaderinfo[num]->musname[0][0] = 0; // becomes empty string + mapheaderinfo[num]->musname_size = 0; + } else { UINT8 j = 0; // i was declared elsewhere tmp = strtok(word2, ","); do { + if (j >= MAXMUSNAMES) + break; deh_strlcpy(mapheaderinfo[num]->musname[j], tmp, sizeof(mapheaderinfo[num]->musname[j]), va("Level header %d: music", num)); - if (j < MAXMUSNAMES) - j++; + j++; } while ((tmp = strtok(NULL,",")) != NULL); + + if (tmp != NULL) + deh_warning("Level header %d: additional music slots past %d discarded", num, MAXMUSNAMES); mapheaderinfo[num]->musname_size = j; } } diff --git a/src/m_random.h b/src/m_random.h index 6f70e5847..786f5d053 100644 --- a/src/m_random.h +++ b/src/m_random.h @@ -54,6 +54,8 @@ typedef enum PR_RANDOMSKIN, // Random skin select from Heavy Magician(?) PR_RULESCRAMBLE, // Rule scrambing events + + PR_MUSICSELECT, // Randomized music selection PR_ITEM_ROULETTE, // Item results PR_ITEM_RINGS, // Flung ring/bumper/player (on death) @@ -67,8 +69,6 @@ typedef enum PR_SPARKLE, // Endsign and/or Emerald PR_MOVINGTARGET, // Randomised moving targets - - PR_MUSICSELECT, // Randomized music selection PRNUMCLASS } pr_class_t; diff --git a/src/p_setup.c b/src/p_setup.c index 068a23033..7410b985b 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -389,10 +389,7 @@ static void P_ClearSingleMapHeaderInfo(INT16 num) mapheaderinfo[num]->gravity = DEFAULT_GRAVITY; mapheaderinfo[num]->keywords[0] = '\0'; for (i = 0; i < MAXMUSNAMES; i++) - { - sprintf(mapheaderinfo[num]->musname[i], "%.5sM", G_BuildMapName(num+1)); - mapheaderinfo[num]->musname[i][6] = 0; - } + mapheaderinfo[num]->musname[i][0] = 0; mapheaderinfo[num]->mustrack = 0; mapheaderinfo[num]->muspos = 0; mapheaderinfo[num]->musname_size = 0;