diff --git a/src/dehacked.c b/src/dehacked.c index 1e6c0cdb..4a7599b9 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -2428,6 +2428,8 @@ static void readunlockable(MYFILE *f, INT32 num) unlockables[num].type = SECRET_SOUNDTEST; else if (fastcmp(word2, "ENCORE")) unlockables[num].type = SECRET_ENCORE; + else if (fastcmp(word2, "HELLATTACK")) + unlockables[num].type = SECRET_HELLATTACK; else unlockables[num].type = (INT16)i; } diff --git a/src/m_cond.c b/src/m_cond.c index 63f88cb6..80b86331 100644 --- a/src/m_cond.c +++ b/src/m_cond.c @@ -102,8 +102,9 @@ unlockable_t unlockables[MAXUNLOCKABLES] = /* 03 */ {"Chao Cup", "", -1, 3, SECRET_NONE, 0, false, false, 0}, /* 04 */ {"Encore Mode", "", 3, 4, SECRET_ENCORE, 0, false, false, 0}, + /* 05 */ {"Hell Attack", "", 5, 5, SECRET_HELLATTACK, 0, false, false, 0}, - /* 05 */ {"Record Attack", "", -1, -1, SECRET_RECORDATTACK, 0, true, true, 0}, + /* 06 */ {"Record Attack", "", -1, -1, SECRET_RECORDATTACK, 0, true, true, 0}, }; // Default number of emblems and extra emblems @@ -127,10 +128,13 @@ void M_SetupDefaultConditionSets(void) M_AddRawCondition(3, 1, UC_TOTALEMBLEMS, 30, 0, 0); M_AddRawCondition(3, 2, UC_MATCHESPLAYED, 50, 0, 0); - // -- 4: Collect 50 emblems OR play 150 matches - M_AddRawCondition(4, 1, UC_TOTALEMBLEMS, 50, 0, 0); + // -- 4: Collect 40 emblems OR play 150 matches + M_AddRawCondition(4, 1, UC_TOTALEMBLEMS, 40, 0, 0); M_AddRawCondition(4, 2, UC_MATCHESPLAYED, 150, 0, 0); + // -- 5: Collect 50 emblems ONLY + M_AddRawCondition(5, 1, UC_TOTALEMBLEMS, 50, 0, 0); + // -- 10: Play 100 matches M_AddRawCondition(10, 1, UC_MATCHESPLAYED, 100, 0, 0); } diff --git a/src/m_cond.h b/src/m_cond.h index 5c8762ad..81b6803c 100644 --- a/src/m_cond.h +++ b/src/m_cond.h @@ -125,6 +125,7 @@ typedef struct #define SECRET_SOUNDTEST 3 // Sound Test #define SECRET_CREDITS 4 // Enables Credits #define SECRET_ENCORE 5 // Enables Encore mode cvar +#define SECRET_HELLATTACK 6 // Map Hell in record attack // If you have more secrets than these variables allow in your game, // you seriously need to get a life. diff --git a/src/m_menu.c b/src/m_menu.c index 0bc0f213..03e74a9a 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -3911,7 +3911,7 @@ boolean M_CanShowLevelInList(INT32 mapnum, INT32 gt) if (M_MapLocked(mapnum+1)) return false; // not unlocked - if (gt == GT_COOP && (mapheaderinfo[mapnum]->typeoflevel & TOL_COOP)) + /*if (gt == GT_COOP && (mapheaderinfo[mapnum]->typeoflevel & TOL_COOP)) return true; if (gt == GT_COMPETITION && (mapheaderinfo[mapnum]->typeoflevel & TOL_COMPETITION)) @@ -3920,10 +3920,10 @@ boolean M_CanShowLevelInList(INT32 mapnum, INT32 gt) if (gt == GT_CTF && (mapheaderinfo[mapnum]->typeoflevel & TOL_CTF)) return true; - if ((gt == GT_MATCH || gt == GT_TEAMMATCH) && (mapheaderinfo[mapnum]->typeoflevel & TOL_MATCH)) - return true; - if ((gt == GT_TAG || gt == GT_HIDEANDSEEK) && (mapheaderinfo[mapnum]->typeoflevel & TOL_TAG)) + return true;*/ + + if ((gt == GT_MATCH || gt == GT_TEAMMATCH) && (mapheaderinfo[mapnum]->typeoflevel & TOL_MATCH)) return true; if (gt == GT_RACE && (mapheaderinfo[mapnum]->typeoflevel & TOL_RACE)) @@ -3931,29 +3931,38 @@ boolean M_CanShowLevelInList(INT32 mapnum, INT32 gt) return false; - case LLM_LEVELSELECT: + /*case LLM_LEVELSELECT: if (mapheaderinfo[mapnum]->levelselect != maplistoption) return false; if (M_MapLocked(mapnum+1)) return false; // not unlocked - return true; + return true;*/ case LLM_RECORDATTACK: - if (!(mapheaderinfo[mapnum]->menuflags & LF2_RECORDATTACK)) + /*if (!(mapheaderinfo[mapnum]->menuflags & LF2_RECORDATTACK)) + return false;*/ + + if (!(mapheaderinfo[mapnum]->typeoflevel & TOL_RACE)) return false; if (M_MapLocked(mapnum+1)) return false; // not unlocked - if (mapheaderinfo[mapnum]->menuflags & LF2_NOVISITNEEDED) + if (M_SecretUnlocked(SECRET_HELLATTACK)) + return true; // now you're in hell + + if (mapheaderinfo[mapnum]->menuflags & LF2_HIDEINMENU) + return false; // map hell + + /*if (mapheaderinfo[mapnum]->menuflags & LF2_NOVISITNEEDED) return true; if (!mapvisited[mapnum]) - return false; + return false;*/ return true; - case LLM_NIGHTSATTACK: + /*case LLM_NIGHTSATTACK: if (!(mapheaderinfo[mapnum]->menuflags & LF2_NIGHTSATTACK)) return false; @@ -3966,7 +3975,9 @@ boolean M_CanShowLevelInList(INT32 mapnum, INT32 gt) if (!mapvisited[mapnum]) return false; - return true; + return true;*/ + default: + return false; } // Hmm? Couldn't decide?