]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/gamemodes/gamemode/survival/survival.qh
Replace 'sv' into 'surv' to avoid possible future confusions
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / gamemodes / gamemode / survival / survival.qh
index 53763575bdd9e4f142ba22a39f3fe10286317e26..baddfb5c26ec7cacddc4e1748f9bd57ecfebf783 100644 (file)
@@ -1,5 +1,37 @@
 #pragma once
 
+#include <common/gamemodes/gamemode/lms/lms.qh>
+#include <common/mapinfo.qh>
+
+#ifdef CSQC
+void HUD_Mod_Survival(vector pos, vector mySize);
+#endif
+CLASS(Survival, Gametype)
+    INIT(Survival)
+    {
+        this.gametype_init(this, _("Survival"), "surv", "g_survival", GAMETYPE_FLAG_USEPOINTS, "", "timelimit=20 pointlimit=12", _("Identify and eliminate all the hunters before all your allies are gone"));
+    }
+    METHOD(Survival, m_isAlwaysSupported, bool(Gametype this, int spawnpoints, float diameter))
+    {
+        return true;
+    }
+    METHOD(Survival, m_isForcedSupported, bool(Gametype this))
+    {
+        if(!cvar("g_survival_not_lms_maps"))
+        {
+            // if this is unset, all LMS maps support Survival too
+            if(!(MapInfo_Map_supportedGametypes & this.m_flags) && (MapInfo_Map_supportedGametypes & MAPINFO_TYPE_LMS.m_flags))
+                return true; // TODO: references another gametype (alternatively, we could check which gamemodes are always enabled and append this if any are supported)
+        }
+        return false;
+    }
+#ifdef CSQC
+    ATTRIB(Survival, m_modicons, void(vector pos, vector mySize), HUD_Mod_Survival);
+#endif
+ENDCLASS(Survival)
+REGISTER_GAMETYPE(SURVIVAL, NEW(Survival));
+
+#ifdef GAMEQC
 // shared state signalling the player's survival status
 .int survival_status;
 const int SURV_STATUS_PREY = 1;
@@ -8,3 +40,4 @@ const int SURV_STATUS_HUNTER = 2;
 // hardcoded player colors for survival
 const int SURV_COLOR_PREY = 51; // green
 const int SURV_COLOR_HUNTER = 68; // red
+#endif