]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/util.qc
Include hmg and rpc in the weapon priority lists
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / util.qc
index ec643fcb5885cac7d20ccd0cfe0cf16b93b6ea80..e0b501c258ad0453c78c1d8b67b61df392d4a162 100644 (file)
@@ -18,7 +18,7 @@
     #include "mapinfo.qh"
 #endif
 
-#ifndef MENUQC
+#ifdef GAMEQC
 /*
 * Get "real" origin, in worldspace, even if ent is attached to something else.
 */
@@ -55,29 +55,30 @@ string wordwrap(string s, float l)
        return r;
 }
 
-#ifndef MENUQC
-#ifndef CSQC
+#ifdef SVQC
+entity _wordwrap_buffer_sprint_ent;
 void wordwrap_buffer_sprint(string s)
-{SELFPARAM();
+{
        wordwrap_buffer = strcat(wordwrap_buffer, s);
        if(s == "\n")
        {
-               sprint(self, wordwrap_buffer);
+               sprint(_wordwrap_buffer_sprint_ent, wordwrap_buffer);
                wordwrap_buffer = "";
        }
 }
 
-void wordwrap_sprint(string s, float l)
-{SELFPARAM();
+void wordwrap_sprint(entity to, string s, float l)
+{
        wordwrap_buffer = "";
+       _wordwrap_buffer_sprint_ent = to;
        wordwrap_cb(s, l, wordwrap_buffer_sprint);
+       _wordwrap_buffer_sprint_ent = NULL;
        if(wordwrap_buffer != "")
-               sprint(self, strcat(wordwrap_buffer, "\n"));
+               sprint(to, strcat(wordwrap_buffer, "\n"));
        wordwrap_buffer = "";
        return;
 }
 #endif
-#endif
 
 #ifndef SVQC
 string draw_UseSkinFor(string pic)
@@ -294,7 +295,7 @@ float compressShortVector(vector vec)
 {
        vector ang;
        float p, y, len;
-       if(vlen(vec) == 0)
+       if(vec == '0 0 0')
                return 0;
        //print("compress: ", vtos(vec), "\n");
        ang = vectoangles(vec);
@@ -322,7 +323,7 @@ float compressShortVector(vector vec)
        return (p * 0x1000) + (y * 0x80) + len;
 }
 
-void compressShortVector_init()
+STATIC_INIT(compressShortVector)
 {
        float l = 1;
        float f = pow(2, 1/8);
@@ -349,7 +350,7 @@ void compressShortVector_init()
        }
 }
 
-#ifndef MENUQC
+#ifdef GAMEQC
 float CheckWireframeBox(entity forent, vector v0, vector dvx, vector dvy, vector dvz)
 {
        traceline(v0, v0 + dvx, true, forent); if(trace_fraction < 1) return 0;
@@ -396,6 +397,9 @@ string fixPriorityList(string order, float from, float to, float subtract, float
                n = tokenize_console(neworder);
                for(w = to; w >= from; --w)
                {
+                       float wflags = Weapons_from(w).spawnflags;
+                       if(wflags & WEP_FLAG_HIDDEN && wflags & WEP_FLAG_MUTATORBLOCKED && !(wflags & WEP_FLAG_NORMAL))
+                               continue;
                        for(i = 0; i < n; ++i)
                                if(stof(argv(i)) == w)
                                        break;
@@ -445,7 +449,7 @@ string swapInPriorityList(string order, float i, float j)
        return order;
 }
 
-#ifndef MENUQC
+#ifdef GAMEQC
 void get_mi_min_max(float mode)
 {
        vector mi, ma;
@@ -469,7 +473,7 @@ void get_mi_min_max(float mode)
 
        mi_min = mi;
        mi_max = ma;
-       MapInfo_Get_ByName(mi_shortname, 0, 0);
+       MapInfo_Get_ByName(mi_shortname, 0, NULL);
        if(MapInfo_Map_mins.x < MapInfo_Map_maxs.x)
        {
                mi_min = MapInfo_Map_mins;
@@ -486,7 +490,7 @@ void get_mi_min_max(float mode)
                                         '0 1 0' * ma.y + '0 0 1' * ma.z,
                                         '1 0 0' * ma.x,
                                         MOVE_WORLDONLY,
-                                        world);
+                                        NULL);
                        if(!trace_startsolid)
                                mi_min.x = trace_endpos.x;
 
@@ -495,7 +499,7 @@ void get_mi_min_max(float mode)
                                         '1 0 0' * ma.x + '0 0 1' * ma.z,
                                         '0 1 0' * ma.y,
                                         MOVE_WORLDONLY,
-                                        world);
+                                        NULL);
                        if(!trace_startsolid)
                                mi_min.y = trace_endpos.y;
 
@@ -504,7 +508,7 @@ void get_mi_min_max(float mode)
                                         '1 0 0' * ma.x + '0 1 0' * ma.y,
                                         '0 0 1' * ma.z,
                                         MOVE_WORLDONLY,
-                                        world);
+                                        NULL);
                        if(!trace_startsolid)
                                mi_min.z = trace_endpos.z;
 
@@ -513,7 +517,7 @@ void get_mi_min_max(float mode)
                                         '0 1 0' * ma.y + '0 0 1' * ma.z,
                                         '1 0 0' * mi.x,
                                         MOVE_WORLDONLY,
-                                        world);
+                                        NULL);
                        if(!trace_startsolid)
                                mi_max.x = trace_endpos.x;
 
@@ -522,7 +526,7 @@ void get_mi_min_max(float mode)
                                         '1 0 0' * ma.x + '0 0 1' * ma.z,
                                         '0 1 0' * mi.y,
                                         MOVE_WORLDONLY,
-                                        world);
+                                        NULL);
                        if(!trace_startsolid)
                                mi_max.y = trace_endpos.y;
 
@@ -531,7 +535,7 @@ void get_mi_min_max(float mode)
                                         '1 0 0' * ma.x + '0 1 0' * ma.y,
                                         '0 0 1' * mi.z,
                                         MOVE_WORLDONLY,
-                                        world);
+                                        NULL);
                        if(!trace_startsolid)
                                mi_max.z = trace_endpos.z;
                }
@@ -589,7 +593,7 @@ float cvar_settemp(string tmp_cvar, string tmp_value)
 
        if (!(tmp_cvar || tmp_value))
        {
-               LOG_TRACE("Error: Invalid usage of cvar_settemp(string, string); !\n");
+               LOG_TRACE("Error: Invalid usage of cvar_settemp(string, string); !");
                return 0;
        }
 
@@ -599,7 +603,7 @@ float cvar_settemp(string tmp_cvar, string tmp_value)
                return 0;
        }
 
-       FOREACH_ENTITY_CLASS("saved_cvar_value", it.netname == tmp_cvar,
+       IL_EACH(g_saved_cvars, it.netname == tmp_cvar,
        {
                created_saved_value = -1; // skip creation
                break; // no need to continue
@@ -609,6 +613,7 @@ float cvar_settemp(string tmp_cvar, string tmp_value)
        {
                // creating a new entity to keep track of this cvar
                entity e = new_pure(saved_cvar_value);
+               IL_PUSH(g_saved_cvars, e);
                e.netname = strzone(tmp_cvar);
                e.message = strzone(cvar_string(tmp_cvar));
                created_saved_value = 1;
@@ -632,7 +637,7 @@ int cvar_settemp_restore()
                        cvar_set(it.netname, it.message);
                        strunzone(it.netname);
                        strunzone(it.message);
-                       remove(it);
+                       delete(it);
                        ++j;
                }
                else
@@ -640,13 +645,13 @@ int cvar_settemp_restore()
        });
 
 #else
-       entity e = world;
+       entity e = NULL;
        while((e = find(e, classname, "saved_cvar_value")))
        {
                if(cvar_type(e.netname))
                {
                        cvar_set(e.netname, e.message);
-                       remove(e);
+                       delete(e);
                        ++j;
                }
                else
@@ -929,7 +934,7 @@ string textShortenToLength(string theText, float maxWidth, textLengthUpToLength_
                return strcat(substring(theText, 0, textLengthUpToLength(theText, maxWidth - tw("..."), tw)), "...");
 }
 
-float isGametypeInFilter(float gt, float tp, float ts, string pattern)
+float isGametypeInFilter(Gametype gt, float tp, float ts, string pattern)
 {
        string subpattern, subpattern2, subpattern3, subpattern4;
        subpattern = strcat(",", MapInfo_Type_ToString(gt), ",");
@@ -1110,7 +1115,7 @@ vector decompressShotOrigin(int f)
        return v;
 }
 
-#ifndef MENUQC
+#ifdef GAMEQC
 vector healtharmor_maxdamage(float h, float a, float armorblock, int deathtype)
 {
        // NOTE: we'll always choose the SMALLER value...
@@ -1225,7 +1230,7 @@ float get_model_parameters(string m, float sk)
        }
        get_model_parameters_fixbone = 0;
 
-#ifndef MENUQC
+#ifdef GAMEQC
        MUTATOR_CALLHOOK(ClearModelParams);
 #endif
 
@@ -1290,7 +1295,7 @@ float get_model_parameters(string m, float sk)
                        get_model_parameters_bone_upperbody = s;
                if(c == "bone_weapon")
                        get_model_parameters_bone_weapon = s;
-       #ifndef MENUQC
+       #ifdef GAMEQC
                MUTATOR_CALLHOOK(GetModelParams, c, s);
        #endif
                for(int i = 0; i < MAX_AIM_BONES; ++i)
@@ -1383,7 +1388,7 @@ void m_shutdown()
        cvar_settemp_restore(); // this must be done LAST, but in any case
 }
 
-#ifndef MENUQC
+#ifdef GAMEQC
 .float skeleton_bones_index;
 void Skeleton_SetBones(entity e)
 {
@@ -1433,7 +1438,7 @@ void FindConnectedComponent(entity e, .entity fld, findNextEntityNearFunction_t
 
        // start with a 1-element queue
        queue_start = queue_end = e;
-       queue_end.(fld) = world;
+       queue_end.(fld) = NULL;
        queue_end.FindConnectedComponent_processing = 1;
 
        // for each queued item:
@@ -1441,7 +1446,7 @@ void FindConnectedComponent(entity e, .entity fld, findNextEntityNearFunction_t
        {
                // find all neighbors of queue_start
                entity t;
-               for(t = world; (t = nxt(t, queue_start, pass)); )
+               for(t = NULL; (t = nxt(t, queue_start, pass)); )
                {
                        if(t.FindConnectedComponent_processing)
                                continue;
@@ -1450,7 +1455,7 @@ void FindConnectedComponent(entity e, .entity fld, findNextEntityNearFunction_t
                                // it is connected? ADD IT. It will look for neighbors soon too.
                                queue_end.(fld) = t;
                                queue_end = t;
-                               queue_end.(fld) = world;
+                               queue_end.(fld) = NULL;
                                queue_end.FindConnectedComponent_processing = 1;
                        }
                }
@@ -1461,7 +1466,7 @@ void FindConnectedComponent(entity e, .entity fld, findNextEntityNearFunction_t
                queue_start.FindConnectedComponent_processing = 0;
 }
 
-#ifndef MENUQC
+#ifdef GAMEQC
 vector animfixfps(entity e, vector a, vector b)
 {
        // multi-frame anim: keep as-is
@@ -1480,7 +1485,7 @@ vector animfixfps(entity e, vector a, vector b)
 }
 #endif
 
-#ifndef MENUQC
+#ifdef GAMEQC
 Notification Announcer_PickNumber(int type, int num)
 {
     return = NULL;
@@ -1592,7 +1597,7 @@ Notification Announcer_PickNumber(int type, int num)
 }
 #endif
 
-#ifndef MENUQC
+#ifdef GAMEQC
 int Mod_Q1BSP_SuperContentsFromNativeContents(int nativecontents)
 {
        switch(nativecontents)