]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_cmds.c
fix stupid bug in CL_SetInfo when checking for pmodel/emodel as key (it was using...
[xonotic/darkplaces.git] / prvm_cmds.c
index b3e2e97e0079d71ea4497114549fe43966ea726f..20d2dd03ea6988be8461b5026a92d325e02f2cc2 100644 (file)
@@ -17,7 +17,8 @@ void VM_Warning(const char *fmt, ...)
        va_end(argptr);
 
        Con_Print(msg);
-       PRVM_PrintState();
+       // TODO: either add a cvar/cmd to control the state dumping or replace some of the calls with Con_Printf [9/13/2006 Black]
+       //PRVM_PrintState();
 }
 
 
@@ -29,20 +30,8 @@ void VM_Warning(const char *fmt, ...)
 static char vm_string_temp[VM_STRINGTEMP_BUFFERS][VM_STRINGTEMP_LENGTH];
 static int vm_string_tempindex = 0;
 
-// qc file handling
-#define MAX_VMFILES            256
-#define MAX_PRVMFILES  MAX_VMFILES * PRVM_MAXPROGS
-#define VM_FILES ((qfile_t**)(vm_files + PRVM_GetProgNr() * MAX_VMFILES))
-
-qfile_t *vm_files[MAX_PRVMFILES];
-
-// qc fs search handling
-#define MAX_VMSEARCHES 128
-#define TOTAL_VMSEARCHES MAX_VMSEARCHES * PRVM_MAXPROGS
-#define VM_SEARCHLIST ((fssearch_t**)(vm_fssearchlist + PRVM_GetProgNr() * MAX_VMSEARCHES))
-
-fssearch_t *vm_fssearchlist[TOTAL_VMSEARCHES];
-
+// TODO: (move vm_files and vm_fssearchlist to prvm_prog_t struct)
+// TODO: move vm_files and vm_fssearchlist back [9/13/2006 Black]
 char *VM_GetTempString(void)
 {
        char *s;
@@ -1289,6 +1278,67 @@ void VM_sqrt (void)
        PRVM_G_FLOAT(OFS_RETURN) = sqrt(PRVM_G_FLOAT(OFS_PARM0));
 }
 
+/*
+=========
+VM_asin
+
+float  asin(float)
+=========
+*/
+void VM_asin (void)
+{
+       VM_SAFEPARMCOUNT(1,VM_asin);
+       PRVM_G_FLOAT(OFS_RETURN) = asin(PRVM_G_FLOAT(OFS_PARM0));
+}
+
+/*
+=========
+VM_acos
+float  acos(float)
+=========
+*/
+void VM_acos (void)
+{
+       VM_SAFEPARMCOUNT(1,VM_acos);
+       PRVM_G_FLOAT(OFS_RETURN) = acos(PRVM_G_FLOAT(OFS_PARM0));
+}
+
+/*
+=========
+VM_atan
+float  atan(float)
+=========
+*/
+void VM_atan (void)
+{
+       VM_SAFEPARMCOUNT(1,VM_atan);
+       PRVM_G_FLOAT(OFS_RETURN) = atan(PRVM_G_FLOAT(OFS_PARM0));
+}
+
+/*
+=========
+VM_atan2
+float  atan2(float,float)
+=========
+*/
+void VM_atan2 (void)
+{
+       VM_SAFEPARMCOUNT(2,VM_atan2);
+       PRVM_G_FLOAT(OFS_RETURN) = atan2(PRVM_G_FLOAT(OFS_PARM0), PRVM_G_FLOAT(OFS_PARM1));
+}
+
+/*
+=========
+VM_tan
+float  tan(float)
+=========
+*/
+void VM_tan (void)
+{
+       VM_SAFEPARMCOUNT(1,VM_tan);
+       PRVM_G_FLOAT(OFS_RETURN) = tan(PRVM_G_FLOAT(OFS_PARM0));
+}
+
 /*
 =================
 VM_randomvec
@@ -1506,34 +1556,34 @@ setcolor(clientent, value)
 void VM_Files_Init(void)
 {
        int i;
-       for (i = 0;i < MAX_VMFILES;i++)
-               VM_FILES[i] = NULL;
+       for (i = 0;i < PRVM_MAX_OPENFILES;i++)
+               prog->openfiles[i] = NULL;
 }
 
 void VM_Files_CloseAll(void)
 {
        int i;
-       for (i = 0;i < MAX_VMFILES;i++)
+       for (i = 0;i < PRVM_MAX_OPENFILES;i++)
        {
-               if (VM_FILES[i])
-                       FS_Close(VM_FILES[i]);
-               VM_FILES[i] = NULL;
+               if (prog->openfiles[i])
+                       FS_Close(prog->openfiles[i]);
+               prog->openfiles[i] = NULL;
        }
 }
 
 qfile_t *VM_GetFileHandle( int index )
 {
-       if (index < 0 || index >= MAX_VMFILES)
+       if (index < 0 || index >= PRVM_MAX_OPENFILES)
        {
                Con_Printf("VM_GetFileHandle: invalid file handle %i used in %s\n", index, PRVM_NAME);
                return NULL;
        }
-       if (VM_FILES[index] == NULL)
+       if (prog->openfiles[index] == NULL)
        {
                Con_Printf("VM_GetFileHandle: no such file handle %i (or file has been closed) in %s\n", index, PRVM_NAME);
                return NULL;
        }
-       return VM_FILES[index];
+       return prog->openfiles[index];
 }
 
 /*
@@ -1553,13 +1603,13 @@ void VM_fopen(void)
 
        VM_SAFEPARMCOUNT(2,VM_fopen);
 
-       for (filenum = 0;filenum < MAX_VMFILES;filenum++)
-               if (VM_FILES[filenum] == NULL)
+       for (filenum = 0;filenum < PRVM_MAX_OPENFILES;filenum++)
+               if (prog->openfiles[filenum] == NULL)
                        break;
-       if (filenum >= MAX_VMFILES)
+       if (filenum >= PRVM_MAX_OPENFILES)
        {
                PRVM_G_FLOAT(OFS_RETURN) = -2;
-               VM_Warning("VM_fopen: %s ran out of file handles (%i)\n", PRVM_NAME, MAX_VMFILES);
+               VM_Warning("VM_fopen: %s ran out of file handles (%i)\n", PRVM_NAME, PRVM_MAX_OPENFILES);
                return;
        }
        mode = (int)PRVM_G_FLOAT(OFS_PARM1);
@@ -1581,21 +1631,21 @@ void VM_fopen(void)
        }
        filename = PRVM_G_STRING(OFS_PARM0);
 
-       VM_FILES[filenum] = FS_Open(va("data/%s", filename), modestring, false, false);
-       if (VM_FILES[filenum] == NULL && mode == 0)
-               VM_FILES[filenum] = FS_Open(va("%s", filename), modestring, false, false);
+       prog->openfiles[filenum] = FS_Open(va("data/%s", filename), modestring, false, false);
+       if (prog->openfiles[filenum] == NULL && mode == 0)
+               prog->openfiles[filenum] = FS_Open(va("%s", filename), modestring, false, false);
 
-       if (VM_FILES[filenum] == NULL)
+       if (prog->openfiles[filenum] == NULL)
        {
                PRVM_G_FLOAT(OFS_RETURN) = -1;
-               if (developer.integer >= 10)
+               if (developer.integer >= 100)
                        VM_Warning("VM_fopen: %s: %s mode %s failed\n", PRVM_NAME, filename, modestring);
        }
        else
        {
                PRVM_G_FLOAT(OFS_RETURN) = filenum;
-               if (developer.integer >= 10)
-                       VM_Warning("VM_fopen: %s: %s mode %s opened as #%i\n", PRVM_NAME, filename, modestring, filenum);
+               if (developer.integer >= 100)
+                       Con_Printf("VM_fopen: %s: %s mode %s opened as #%i\n", PRVM_NAME, filename, modestring, filenum);
        }
 }
 
@@ -1614,20 +1664,20 @@ void VM_fclose(void)
        VM_SAFEPARMCOUNT(1,VM_fclose);
 
        filenum = (int)PRVM_G_FLOAT(OFS_PARM0);
-       if (filenum < 0 || filenum >= MAX_VMFILES)
+       if (filenum < 0 || filenum >= PRVM_MAX_OPENFILES)
        {
                VM_Warning("VM_fclose: invalid file handle %i used in %s\n", filenum, PRVM_NAME);
                return;
        }
-       if (VM_FILES[filenum] == NULL)
+       if (prog->openfiles[filenum] == NULL)
        {
                VM_Warning("VM_fclose: no such file handle %i (or file has been closed) in %s\n", filenum, PRVM_NAME);
                return;
        }
-       FS_Close(VM_FILES[filenum]);
-       VM_FILES[filenum] = NULL;
-       if (developer.integer >= 10)
-               VM_Warning("VM_fclose: %s: #%i closed\n", PRVM_NAME, filenum);
+       FS_Close(prog->openfiles[filenum]);
+       prog->openfiles[filenum] = NULL;
+       if (developer.integer >= 100)
+               Con_Printf("VM_fclose: %s: #%i closed\n", PRVM_NAME, filenum);
 }
 
 /*
@@ -1647,12 +1697,12 @@ void VM_fgets(void)
        VM_SAFEPARMCOUNT(1,VM_fgets);
 
        filenum = (int)PRVM_G_FLOAT(OFS_PARM0);
-       if (filenum < 0 || filenum >= MAX_VMFILES)
+       if (filenum < 0 || filenum >= PRVM_MAX_OPENFILES)
        {
                VM_Warning("VM_fgets: invalid file handle %i used in %s\n", filenum, PRVM_NAME);
                return;
        }
-       if (VM_FILES[filenum] == NULL)
+       if (prog->openfiles[filenum] == NULL)
        {
                VM_Warning("VM_fgets: no such file handle %i (or file has been closed) in %s\n", filenum, PRVM_NAME);
                return;
@@ -1660,7 +1710,7 @@ void VM_fgets(void)
        end = 0;
        for (;;)
        {
-               c = FS_Getc(VM_FILES[filenum]);
+               c = FS_Getc(prog->openfiles[filenum]);
                if (c == '\r' || c == '\n' || c < 0)
                        break;
                if (end < VM_STRINGTEMP_LENGTH - 1)
@@ -1670,9 +1720,9 @@ void VM_fgets(void)
        // remove \n following \r
        if (c == '\r')
        {
-               c = FS_Getc(VM_FILES[filenum]);
+               c = FS_Getc(prog->openfiles[filenum]);
                if (c != '\n')
-                       FS_UnGetc(VM_FILES[filenum], (unsigned char)c);
+                       FS_UnGetc(prog->openfiles[filenum], (unsigned char)c);
        }
        if (developer.integer >= 100)
                Con_Printf("fgets: %s: %s\n", PRVM_NAME, string);
@@ -1699,19 +1749,19 @@ void VM_fputs(void)
        VM_SAFEPARMCOUNT(2,VM_fputs);
 
        filenum = (int)PRVM_G_FLOAT(OFS_PARM0);
-       if (filenum < 0 || filenum >= MAX_VMFILES)
+       if (filenum < 0 || filenum >= PRVM_MAX_OPENFILES)
        {
                VM_Warning("VM_fputs: invalid file handle %i used in %s\n", filenum, PRVM_NAME);
                return;
        }
-       if (VM_FILES[filenum] == NULL)
+       if (prog->openfiles[filenum] == NULL)
        {
                VM_Warning("VM_fputs: no such file handle %i (or file has been closed) in %s\n", filenum, PRVM_NAME);
                return;
        }
        VM_VarString(1, string, sizeof(string));
        if ((stringlength = (int)strlen(string)))
-               FS_Write(VM_FILES[filenum], string, stringlength);
+               FS_Write(prog->openfiles[filenum], string, stringlength);
        if (developer.integer >= 100)
                Con_Printf("fputs: %s: %s\n", PRVM_NAME, string);
 }
@@ -1737,6 +1787,138 @@ void VM_strlen(void)
                PRVM_G_FLOAT(OFS_RETURN) = 0;
 }
 
+// DRESK - Decolorized String
+/*
+=========
+VM_strdecolorize
+
+string strdecolorize(string s)
+=========
+*/
+// string (string s) strdecolorize = #472; // returns the passed in string with color codes stripped
+void VM_strdecolorize(void)
+{
+       char *szNewString;
+       const char *szString;
+       size_t nCnt;
+       int nPos;
+       int nFillPos;
+       int bFinished;
+               nPos = 0;
+               nFillPos = 0;
+               nCnt = 0;
+               bFinished = 0;
+
+       // Prepare Strings
+       VM_SAFEPARMCOUNT(1,VM_strdecolorize);
+       szString = PRVM_G_STRING(OFS_PARM0);
+       szNewString = VM_GetTempString();
+
+       while(!bFinished)
+       { // Traverse through String
+               if( szString[nPos] == '\n' || szString[nPos] == '\r' || szString[nPos] <= 0)
+               { // String End Found
+                       szNewString[nFillPos++] = szString[nPos];
+                       bFinished = 1;
+               }
+               else
+               if( szString[nPos] == STRING_COLOR_TAG)
+               { // Color Code Located
+                       if( szString[nPos + 1] == STRING_COLOR_TAG)
+                       { // Valid Characters to Include
+                               szNewString[nFillPos++] = szString[nPos];
+                               nPos = nPos + 1;
+                               szNewString[nFillPos++] = szString[nPos];
+                       }
+                       else
+                       if( szString[nPos + 1] >= '0' && szString[nPos + 1] <= '9' )
+                       { // Color Code Found; Increment Position
+                               nPos = nPos + 1;
+                       }
+                       else
+                       { // Unknown Color Code; Include
+                               szNewString[nFillPos++] = szString[nPos];
+                               nPos = nPos + 1;
+                       }
+               }
+               else
+                       // Include Character
+                       szNewString[nFillPos++] = szString[nPos];
+
+                       // Increment Position
+                       nPos = nPos + 1;
+       }
+
+       PRVM_G_INT(OFS_RETURN) = PRVM_SetEngineString(szNewString);
+}
+
+// DRESK - String Length (not counting color codes)
+/*
+=========
+VM_strlennocol
+
+float  strlennocol(string s)
+=========
+*/
+// float(string s) strlennocol = #471; // returns how many characters are in a string not including color codes
+// For example, ^2Dresk returns a length of 5
+void VM_strlennocol(void)
+{
+       const char *szString;
+       size_t nCnt;
+       int nPos;
+       int bFinished;
+               nPos = 0;
+               nCnt = 0;
+               bFinished = 0;
+
+       VM_SAFEPARMCOUNT(1,VM_strlennocol);
+
+       szString = PRVM_G_STRING(OFS_PARM0);
+       if(szString)
+       { // Valid String
+               while(!bFinished)
+               { // Count Characters
+                       // SV_BroadcastPrintf("Position '%d'; Character '%c'; Length '%d'\n", nPos, szString[nPos], nCnt);
+
+                       if( szString[nPos] == '\n' || szString[nPos] == '\r' || szString[nPos] <= 0)
+                       { // String End Found
+                               // SV_BroadcastPrintf("Found End of String at '%d'\n", nPos);
+                               bFinished = 1;
+                       }
+                       else
+                       if( szString[nPos] == STRING_COLOR_TAG)
+                       { // Color Code Located
+                               if( szString[nPos + 1] == STRING_COLOR_TAG)
+                               { // Increment Length; Skip Color Code
+                                       nCnt = nCnt + 1;
+                                       nPos = nPos + 1;
+                               }
+                               else
+                               if( szString[nPos + 1] >= '0' && szString[nPos + 1] <= '9' )
+                               { // Color Code Found; Increment Position
+                                       // SV_BroadcastPrintf("Found Color Codes at '%d'\n", nPos);
+                                       nPos = nPos + 1;
+                               }
+                               else
+                               { // Unknown Color Code; Increment Length!
+                                       nPos = nPos + 1;
+                                       nCnt = nCnt + 1;
+                               }
+                       }
+                       else
+                               // Increment String Length
+                               nCnt = nCnt + 1;
+
+                       // Increment Position
+                       nPos = nPos + 1;
+               }
+               PRVM_G_FLOAT(OFS_RETURN) = nCnt;
+       }
+       else
+               PRVM_G_FLOAT(OFS_RETURN) = 0;
+}
+
 /*
 =========
 VM_strcat
@@ -2171,17 +2353,21 @@ void VM_modulo(void)
 
 void VM_Search_Init(void)
 {
-       memset(VM_SEARCHLIST,0,sizeof(fssearch_t*[MAX_VMSEARCHES]));
+       int i;
+       for (i = 0;i < PRVM_MAX_OPENSEARCHES;i++)
+               prog->opensearches[i] = NULL;
 }
 
 void VM_Search_Reset(void)
 {
        int i;
        // reset the fssearch list
-       for(i = 0; i < MAX_VMSEARCHES; i++)
-               if(VM_SEARCHLIST[i])
-                       FS_FreeSearch(VM_SEARCHLIST[i]);
-       memset(VM_SEARCHLIST,0,sizeof(fssearch_t*[MAX_VMSEARCHES]));
+       for(i = 0; i < PRVM_MAX_OPENSEARCHES; i++)
+       {
+               if(prog->opensearches[i])
+                       FS_FreeSearch(prog->opensearches[i]);
+               prog->opensearches[i] = NULL;
+       }
 }
 
 /*
@@ -2206,18 +2392,18 @@ void VM_search_begin(void)
        caseinsens = (int)PRVM_G_FLOAT(OFS_PARM1);
        quiet = (int)PRVM_G_FLOAT(OFS_PARM2);
 
-       for(handle = 0; handle < MAX_VMSEARCHES; handle++)
-               if(!VM_SEARCHLIST[handle])
+       for(handle = 0; handle < PRVM_MAX_OPENSEARCHES; handle++)
+               if(!prog->opensearches[handle])
                        break;
 
-       if(handle >= MAX_VMSEARCHES)
+       if(handle >= PRVM_MAX_OPENSEARCHES)
        {
                PRVM_G_FLOAT(OFS_RETURN) = -2;
-               VM_Warning("VM_search_begin: %s ran out of search handles (%i)\n", PRVM_NAME, MAX_VMSEARCHES);
+               VM_Warning("VM_search_begin: %s ran out of search handles (%i)\n", PRVM_NAME, PRVM_MAX_OPENSEARCHES);
                return;
        }
 
-       if(!(VM_SEARCHLIST[handle] = FS_Search(pattern,caseinsens, quiet)))
+       if(!(prog->opensearches[handle] = FS_Search(pattern,caseinsens, quiet)))
                PRVM_G_FLOAT(OFS_RETURN) = -1;
        else
                PRVM_G_FLOAT(OFS_RETURN) = handle;
@@ -2237,19 +2423,19 @@ void VM_search_end(void)
 
        handle = (int)PRVM_G_FLOAT(OFS_PARM0);
 
-       if(handle < 0 || handle >= MAX_VMSEARCHES)
+       if(handle < 0 || handle >= PRVM_MAX_OPENSEARCHES)
        {
                VM_Warning("VM_search_end: invalid handle %i used in %s\n", handle, PRVM_NAME);
                return;
        }
-       if(VM_SEARCHLIST[handle] == NULL)
+       if(prog->opensearches[handle] == NULL)
        {
                VM_Warning("VM_search_end: no such handle %i in %s\n", handle, PRVM_NAME);
                return;
        }
 
-       FS_FreeSearch(VM_SEARCHLIST[handle]);
-       VM_SEARCHLIST[handle] = NULL;
+       FS_FreeSearch(prog->opensearches[handle]);
+       prog->opensearches[handle] = NULL;
 }
 
 /*
@@ -2266,18 +2452,18 @@ void VM_search_getsize(void)
 
        handle = (int)PRVM_G_FLOAT(OFS_PARM0);
 
-       if(handle < 0 || handle >= MAX_VMSEARCHES)
+       if(handle < 0 || handle >= PRVM_MAX_OPENSEARCHES)
        {
                VM_Warning("VM_search_getsize: invalid handle %i used in %s\n", handle, PRVM_NAME);
                return;
        }
-       if(VM_SEARCHLIST[handle] == NULL)
+       if(prog->opensearches[handle] == NULL)
        {
                VM_Warning("VM_search_getsize: no such handle %i in %s\n", handle, PRVM_NAME);
                return;
        }
 
-       PRVM_G_FLOAT(OFS_RETURN) = VM_SEARCHLIST[handle]->numfilenames;
+       PRVM_G_FLOAT(OFS_RETURN) = prog->opensearches[handle]->numfilenames;
 }
 
 /*
@@ -2296,24 +2482,24 @@ void VM_search_getfilename(void)
        handle = (int)PRVM_G_FLOAT(OFS_PARM0);
        filenum = (int)PRVM_G_FLOAT(OFS_PARM1);
 
-       if(handle < 0 || handle >= MAX_VMSEARCHES)
+       if(handle < 0 || handle >= PRVM_MAX_OPENSEARCHES)
        {
                VM_Warning("VM_search_getfilename: invalid handle %i used in %s\n", handle, PRVM_NAME);
                return;
        }
-       if(VM_SEARCHLIST[handle] == NULL)
+       if(prog->opensearches[handle] == NULL)
        {
                VM_Warning("VM_search_getfilename: no such handle %i in %s\n", handle, PRVM_NAME);
                return;
        }
-       if(filenum < 0 || filenum >= VM_SEARCHLIST[handle]->numfilenames)
+       if(filenum < 0 || filenum >= prog->opensearches[handle]->numfilenames)
        {
                VM_Warning("VM_search_getfilename: invalid filenum %i in %s\n", filenum, PRVM_NAME);
                return;
        }
 
        tmp = VM_GetTempString();
-       strlcpy(tmp, VM_SEARCHLIST[handle]->filenames[filenum], VM_STRINGTEMP_LENGTH);
+       strlcpy(tmp, prog->opensearches[handle]->filenames[filenum], VM_STRINGTEMP_LENGTH);
 
        PRVM_G_INT(OFS_RETURN) = PRVM_SetEngineString(tmp);
 }
@@ -2496,7 +2682,7 @@ void VM_drawstring(void)
        }
 
        if(pos[2] || scale[2])
-               Con_Printf("VM_drawstring: z value%c from %s discarded\n",(pos[2] && scale[2]) ? 's' : 0,((pos[2] && scale[2]) ? "pos and scale" : (pos[2] ? "pos" : "scale")));
+               Con_Printf("VM_drawstring: z value%s from %s discarded\n",(pos[2] && scale[2]) ? "s" : " ",((pos[2] && scale[2]) ? "pos and scale" : (pos[2] ? "pos" : "scale")));
 
        DrawQ_String (pos[0], pos[1], string, 0, scale[0], scale[1], rgb[0], rgb[1], rgb[2], PRVM_G_FLOAT(OFS_PARM4), flag);
        PRVM_G_FLOAT(OFS_RETURN) = 1;
@@ -2543,12 +2729,12 @@ void VM_drawpic(void)
        if(flag < DRAWFLAG_NORMAL || flag >=DRAWFLAG_NUMFLAGS)
        {
                PRVM_G_FLOAT(OFS_RETURN) = -2;
-               VM_Warning("VM_drawstring: %s: wrong DRAWFLAG %i !\n",PRVM_NAME,flag);
+               VM_Warning("VM_drawpic: %s: wrong DRAWFLAG %i !\n",PRVM_NAME,flag);
                return;
        }
 
        if(pos[2] || size[2])
-               Con_Printf("VM_drawstring: z value%c from %s discarded\n",(pos[2] && size[2]) ? 's' : 0,((pos[2] && size[2]) ? "pos and size" : (pos[2] ? "pos" : "size")));
+               Con_Printf("VM_drawpic: z value%s from %s discarded\n",(pos[2] && size[2]) ? "s" : " ",((pos[2] && size[2]) ? "pos and size" : (pos[2] ? "pos" : "size")));
 
        DrawQ_Pic(pos[0], pos[1], Draw_CachePic(picname, true), size[0], size[1], rgb[0], rgb[1], rgb[2], PRVM_G_FLOAT(OFS_PARM4), flag);
        PRVM_G_FLOAT(OFS_RETURN) = 1;
@@ -2577,12 +2763,12 @@ void VM_drawfill(void)
        if(flag < DRAWFLAG_NORMAL || flag >=DRAWFLAG_NUMFLAGS)
        {
                PRVM_G_FLOAT(OFS_RETURN) = -2;
-               VM_Warning("VM_drawstring: %s: wrong DRAWFLAG %i !\n",PRVM_NAME,flag);
+               VM_Warning("VM_drawfill: %s: wrong DRAWFLAG %i !\n",PRVM_NAME,flag);
                return;
        }
 
        if(pos[2] || size[2])
-               Con_Printf("VM_drawstring: z value%c from %s discarded\n",(pos[2] && size[2]) ? 's' : 0,((pos[2] && size[2]) ? "pos and size" : (pos[2] ? "pos" : "size")));
+               Con_Printf("VM_drawfill: z value%s from %s discarded\n",(pos[2] && size[2]) ? "s" : " ",((pos[2] && size[2]) ? "pos and size" : (pos[2] ? "pos" : "size")));
 
        DrawQ_Pic(pos[0], pos[1], NULL, size[0], size[1], rgb[0], rgb[1], rgb[2], PRVM_G_FLOAT(OFS_PARM3), flag);
        PRVM_G_FLOAT(OFS_RETURN) = 1;