]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/mapinfo.qc
Allow maps and player models to require beating a campaign or reaching a given level...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mapinfo.qc
index 1d6f4897b81df2ea81f0ee9638c9d93e44172c52..b372339f2d3d3a4b9cb87544aa0c5a11a69915e3 100644 (file)
@@ -905,6 +905,23 @@ float MapInfo_Get_ByName_NoFallbacks(string pFilename, int pAllowGenerate, Gamet
                        else if(WARN_COND)
                                LOG_WARN("Map ", pFilename, " supports unknown feature ", t, ", ignored");
                }
+               else if(t == "locked")
+               {
+                       t = car(s); s = cdr(s); f = stof(s);
+                       // hide the map based on campaign status
+                       if(f > 0)
+                       {
+                               // we need to have reached this level
+                               if(cvar(strcat("g_campaign_", t, "_index")) < f);
+                                       f |= MAPINFO_FLAG_LOCKED;
+                       }
+                       else
+                       {
+                               // we need to have won the campaign
+                               if(!cvar(strcat("g_campaign_", t, "_won")));
+                                       f |= MAPINFO_FLAG_LOCKED;
+                       }
+               }
                else if(t == "hidden")
                {
                        MapInfo_Map_flags |= MAPINFO_FLAG_HIDDEN;
@@ -1313,6 +1330,11 @@ int MapInfo_ForbiddenFlags()
 {
        int f = MAPINFO_FLAG_FORBIDDEN;
 
+#ifdef GAMEQC
+       if (!cvar("g_maplist_allow_locked"))
+#endif
+               f |= MAPINFO_FLAG_LOCKED;
+
 #ifdef GAMEQC
        if (!cvar("g_maplist_allow_hidden"))
 #endif