Get VoreTournament code to compile with gmqcc. To be compiled with the same parameter...
authorMirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>
Mon, 10 Jun 2013 21:13:27 +0000 (00:13 +0300)
committerMirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>
Mon, 10 Jun 2013 21:13:27 +0000 (00:13 +0300)
38 files changed:
data/qcsrc/client/Defs.qc
data/qcsrc/client/Main.qc
data/qcsrc/client/csqc_builtins.qc
data/qcsrc/client/ctf.qc
data/qcsrc/client/main.qh
data/qcsrc/client/miscfunctions.qc
data/qcsrc/common/gamecommand.qc
data/qcsrc/common/mapinfo.qc
data/qcsrc/common/util.qh
data/qcsrc/menu/item/button.c
data/qcsrc/menu/menu.qc
data/qcsrc/menu/msys.qh
data/qcsrc/menu/oo/constructors.h
data/qcsrc/menu/skin-customizables.inc
data/qcsrc/menu/skin.qh
data/qcsrc/menu/voret/inputbox.c
data/qcsrc/server/antilag.qc
data/qcsrc/server/bot/havocbot/havocbot.qc
data/qcsrc/server/bot/scripting.qc
data/qcsrc/server/cl_physics.qc
data/qcsrc/server/cl_player.qc
data/qcsrc/server/func_breakable.qc
data/qcsrc/server/g_subs.qc
data/qcsrc/server/g_world.qc
data/qcsrc/server/keyhunt.qc
data/qcsrc/server/keyhunt.qh
data/qcsrc/server/miscfunctions.qc
data/qcsrc/server/mode_onslaught.qc
data/qcsrc/server/pathlib/movenode.qc
data/qcsrc/server/pathlib/pathlib.qh
data/qcsrc/server/sys.qh
data/qcsrc/server/t_items.qc
data/qcsrc/server/t_plats.qc
data/qcsrc/server/t_quake.qc
data/qcsrc/server/tturrets/include/turrets_early.qh
data/qcsrc/server/tturrets/system/system_damage.qc
data/qcsrc/server/w_common.qc
docs/TODO.txt

index e9ba774..143b9af 100644 (file)
@@ -1,6 +1,3 @@
-#pragma flag off fastarrays // make dp behave with new fteqcc versions. remove when dp bug with fteqcc fastarrays is fixed\r
-\r
-\r
 //NOTE: THIS IS AN INTERFACE FILE. DO NOT EDIT.\r
 //MODIFYING THIS FILE CAN RESULT IN CRC ERRORS.\r
 //YOU HAVE BEEN WARNED.\r
index b1ae035..84e69a5 100644 (file)
@@ -33,9 +33,8 @@ void() menu_show_error =
 // CSQC_Init : Called every time the CSQC code is initialized (essentially at map load)\r
 // Useful for precaching things\r
 \r
-void() menu_sub_null =\r
-{\r
-};\r
+float(float, float, float) menu_sub_null_float = { };\r
+void () menu_sub_null_void  = { };\r
 \r
 #ifdef USE_FTE\r
 float __engine_check;\r
@@ -71,7 +70,7 @@ void CSQC_Init(void)
        drawfont = FONT_USER+1;\r
        menu_visible = FALSE;\r
        menu_show = menu_show_error;\r
-       menu_action = menu_sub_null;\r
+       menu_action = menu_sub_null_float;\r
 \r
        for(i = 0; i < 255; ++i)\r
                if(getplayerkey(i, "viewentity") == "")\r
@@ -972,8 +971,8 @@ void Ent_Remove()
 \r
        self.enttype = 0;\r
        self.classname = "";\r
-       self.draw = menu_sub_null;\r
-       self.entremove = menu_sub_null;\r
+       self.draw = menu_sub_null_void;\r
+       self.entremove = menu_sub_null_void;\r
        // TODO possibly set more stuff to defaults\r
 }\r
 // CSQC_Ent_Remove : Called when the server requests a SSQC / CSQC entity to be removed.  Essentially call remove(self) as well.\r
index c5ba47e..2736feb 100644 (file)
@@ -3,7 +3,6 @@ void(entity e, vector o) setorigin      = #2;
 void (entity e, string m)                                              setmodel = #3;\r
 void(entity e, vector min, vector max) setsize = #4;\r
 \r
-void ()                                                                        break = #6;\r
 float ()                                                               random = #7;\r
 void (entity e, float chan, string samp, float vol, float atten)       sound = #8;\r
 vector (vector v)                                                      normalize = #9;\r
index 63b639a..9b6374d 100644 (file)
@@ -12,7 +12,7 @@ void() menu_close =
 {\r
        menu_visible = false;\r
        menu_show = menu_show_error;\r
-       menu_action = menu_sub_null;\r
+       menu_action = menu_sub_null_float;\r
        \r
        /*if(ctf_temp_1)\r
          strunzone(ctf_temp_1);*/\r
index e16c108..5d87994 100644 (file)
@@ -1,5 +1,3 @@
-const string string_null;\r
-\r
 // --------------------------------------------------------------------------\r
 // MENU Functionality\r
 \r
@@ -11,7 +9,8 @@ const string string_null;
 #define DATABUF_NEXT (5*maxclients)\r
 \r
 void() menu_show_error;\r
-void() menu_sub_null;\r
+float(float, float, float) menu_sub_null_float;\r
+void () menu_sub_null_void;\r
 \r
 float menu_visible;\r
 var void() menu_show;\r
index 687f8a2..dcbeca3 100644 (file)
@@ -1,4 +1,4 @@
-var float(string text, float handleColors, vector fontSize) stringwidth;\r
+float(string text, float handleColors, vector fontSize) stringwidth;\r
 \r
 entity players;\r
 entity teams;\r
index a5cab59..50990c9 100644 (file)
@@ -828,7 +828,7 @@ float GameCommand_Generic(string command)
                return TRUE;\r
        }\r
        else if(argv(0) == "records") {\r
-               print(records_reply);\r
+               //print(records_reply); I HAVE NO CLUE HOW TO FIX THIS!\r
                return TRUE;\r
        }\r
        else if(argv(0) == "rankings") {\r
index 5f58477..f31bc53 100644 (file)
@@ -38,7 +38,7 @@ void MapInfo_Cache_Store()
                return;\r
 \r
        s = db_get(_MapInfo_Cache_DB_NameToIndex, MapInfo_Map_bspname);\r
-       if(!s) // empty string is NOT valid here!\r
+       if(s == "")\r
        {\r
                i = buf_getsize(_MapInfo_Cache_Buf_IndexToMapData);\r
                db_put(_MapInfo_Cache_DB_NameToIndex, MapInfo_Map_bspname, ftos(i));\r
@@ -64,7 +64,7 @@ float MapInfo_Cache_Retrieve(string map)
                return 0;\r
 \r
        s = db_get(_MapInfo_Cache_DB_NameToIndex, map);\r
-       if(!s)\r
+       if(s == "")\r
                return 0;\r
        i = stof(s);\r
 \r
@@ -76,6 +76,7 @@ float MapInfo_Cache_Retrieve(string map)
        MapInfo_Map_supportedGametypes = stof(bufstr_get(_MapInfo_Cache_Buf_IndexToMapData, ++i));\r
        MapInfo_Map_supportedFeatures = stof(bufstr_get(_MapInfo_Cache_Buf_IndexToMapData, ++i));\r
        MapInfo_Map_flags = stof(bufstr_get(_MapInfo_Cache_Buf_IndexToMapData, ++i));\r
+\r
        return 1;\r
 }\r
 \r
@@ -86,6 +87,8 @@ float _MapInfo_globhandle;
 string _MapInfo_GlobItem(float i)\r
 {\r
        string s;\r
+       if(!_MapInfo_globopen)\r
+               return string_null;\r
        s = search_getfilename(_MapInfo_globhandle, i);\r
        return substring(s, 5, strlen(s) - 9); // without maps/ and .bsp\r
 }\r
@@ -93,11 +96,19 @@ string _MapInfo_GlobItem(float i)
 void MapInfo_Enumerate()\r
 {\r
        if(_MapInfo_globopen)\r
+       {\r
                search_end(_MapInfo_globhandle);\r
+               _MapInfo_globopen = 0;\r
+       }\r
        MapInfo_Cache_Invalidate();\r
        _MapInfo_globhandle = search_begin("maps/*.bsp", TRUE, TRUE);\r
-       _MapInfo_globcount = search_getsize(_MapInfo_globhandle);\r
-       _MapInfo_globopen = 1;\r
+       if(_MapInfo_globhandle >= 0)\r
+       {\r
+               _MapInfo_globcount = search_getsize(_MapInfo_globhandle);\r
+               _MapInfo_globopen = 1;\r
+       }\r
+       else\r
+               _MapInfo_globcount = 0;\r
 }\r
 \r
 // filter the info by game type mask (updates MapInfo_count)\r
index ec70449..97298d8 100644 (file)
@@ -5,7 +5,7 @@
        #define func __merge__##otherfunc \\r
        #else \\r
        #define func otherfunc \\r
-       #endif\r
+       #endif \\r
 \r
 // this returns a tempstring containing a copy of s with additional \n newlines added, it also replaces \n in the text with a real newline\r
 // NOTE: s IS allowed to be a tempstring\r
@@ -15,7 +15,7 @@ string wordwrap(string s, float l);
 void wordwrap_sprint(string s, float l);\r
 #endif\r
 #endif\r
-void wordwrap_cb(string s, float l, void(string) callback)\r
+void wordwrap_cb(string s, float l, void(string) callback);\r
 \r
 #ifndef SVQC\r
 string draw_currentSkin;\r
@@ -111,7 +111,11 @@ vector mi_pictexcoord3; // texcoords of the image corners (after transforming, t
 void get_mi_min_max_texcoords(float mode);\r
 #endif\r
 \r
+#ifndef GMQCC\r
 #define FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(x) void reference_##x() { x = x; }\r
+#else\r
+#define FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(x)\r
+#endif\r
 \r
 float almost_equals(float a, float b);\r
 float almost_in_bounds(float a, float b, float c);\r
@@ -192,8 +196,15 @@ void WriteInt24_t(float dest, float val);
 #endif\r
 \r
 // the NULL function\r
-const var void func_null(void); FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(func_null)\r
-const var string string_null;\r
+#ifdef GMQCC\r
+#define null nil\r
+#define func_null nil\r
+#define string_null nil\r
+#else\r
+#define null SUB_null\r
+var void func_null(void);\r
+var string string_null;\r
+#endif\r
 float float2range11(float f);\r
 float float2range01(float f);\r
 \r
index a3753c5..ea4f2ac 100644 (file)
@@ -8,7 +8,7 @@ CLASS(Button) EXTENDS(Label)
        METHOD(Button, mousePress, float(entity, vector))\r
        METHOD(Button, mouseDrag, float(entity, vector))\r
        METHOD(Button, mouseRelease, float(entity, vector))\r
-       ATTRIB(Button, onClick, void(entity, entity), SUB_Null)\r
+       ATTRIB(Button, onClick, void(entity, entity), func_null)\r
        ATTRIB(Button, onClickEntity, entity, NULL)\r
        ATTRIB(Button, src, string, string_null)\r
        ATTRIB(Button, srcSuffix, string, string_null)\r
@@ -169,4 +169,4 @@ void drawButton(entity me)
                else if(!me.focused && me.playedfocus)\r
                        me.playedfocus = 0;\r
 }\r
-#endif
\ No newline at end of file
+#endif\r
index fb10fa3..1260f85 100644 (file)
@@ -18,7 +18,7 @@ float menuMouseMode;
 \r
 void SUB_Null() { };\r
 \r
-void() m_init =\r
+void m_init()\r
 {\r
        localcmd("maxplayers $menu_maxplayers\n"); // make sure maxplayers is set if we start a game with the map command\r
        cvar_set("_menu_alpha", "0");\r
@@ -91,7 +91,7 @@ void UpdateConWidthHeight()
        }\r
 }\r
 \r
-void() m_init_delayed =\r
+void m_init_delayed()\r
 {\r
        float fh, glob, n, i;\r
        string s;\r
@@ -163,7 +163,7 @@ void() m_init_delayed =
                m_display(); // delayed menu display\r
 };\r
 \r
-void(float key, float ascii) m_keyup =\r
+void m_keyup (float key, float ascii)\r
 {\r
        if(!menuInitialized)\r
                return;\r
@@ -187,7 +187,7 @@ void(float key, float ascii) m_keyup =
        if(key == K_SHIFT) menuShiftState -= (menuShiftState & S_SHIFT);\r
 };\r
 \r
-void(float key, float ascii) m_keydown =\r
+void m_keydown (float key, float ascii)\r
 {\r
        if(!menuInitialized)\r
                return;\r
@@ -264,7 +264,7 @@ void draw_Picture_Aligned(vector algn, float scalemode, string img, float a)
        draw_Picture(org, img, isz, '1 1 1', a);\r
 }\r
 \r
-void(string img, float a, string algn, float force1) drawBackground =\r
+void drawBackground (string img, float a, string algn, float force1)\r
 {\r
        vector v;\r
        float i, l;\r
@@ -533,7 +533,7 @@ void m_tooltip(vector pos)
        }\r
 }\r
 \r
-void() m_draw =\r
+void m_draw()\r
 {\r
        float t;\r
        float realFrametime;\r
@@ -707,7 +707,7 @@ void() m_draw =
        frametime = 0;\r
 };\r
 \r
-void() m_display =\r
+void m_display()\r
 {\r
        Menu_Active = true;\r
        setkeydest(KEY_MENU);\r
@@ -724,7 +724,7 @@ void() m_display =
        main.showNotify(main);\r
 };\r
 \r
-void() m_hide =\r
+void m_hide()\r
 {\r
        Menu_Active = false;\r
        setkeydest(KEY_GAME);\r
@@ -737,7 +737,7 @@ void() m_hide =
        main.hideNotify(main);\r
 };\r
 \r
-void() m_toggle =\r
+void m_toggle()\r
 {\r
        if(Menu_Active)\r
                m_hide();\r
@@ -745,7 +745,7 @@ void() m_toggle =
                m_display();\r
 };\r
 \r
-void() m_shutdown =\r
+void m_shutdown()\r
 {\r
        entity e;\r
 \r
@@ -811,7 +811,7 @@ void m_setpointerfocus(entity wnd)
        }\r
 }\r
 \r
-void(string itemname) m_goto =\r
+void m_goto(string itemname)\r
 {\r
        entity e;\r
        if(!menuInitialized)\r
@@ -839,7 +839,7 @@ void(string itemname) m_goto =
        }\r
 }\r
 \r
-void() m_goto_skin_selector =\r
+void m_goto_skin_selector()\r
 {\r
        if(!menuInitialized)\r
                return;\r
@@ -847,7 +847,7 @@ void() m_goto_skin_selector =
        m_goto("skinselector");\r
 }\r
 \r
-void() m_goto_video_settings =\r
+void m_goto_video_settings()\r
 {\r
        if(!menuInitialized)\r
                return;\r
index 2c57a9d..54a6e1b 100644 (file)
@@ -1,5 +1,3 @@
-#pragma flag off fastarrays // make dp behave with new fteqcc versions. remove when dp bug with fteqcc fastarrays is fixed\r
-\r
 //////////////////////////////////////////////////////////\r
 // sys globals\r
 \r
index 5de8560..bf075ed 100644 (file)
@@ -19,5 +19,5 @@
 #define EXTENDS(base)                      me = spawn##base ();\r
 #define METHOD(cname,name,prototype)       me.name = name##cname;\r
 #define ATTRIB(cname,name,type,val)        me.name = val;\r
-#define ATTRIBARRAY(cname,name,type,cnt)   me.name = me.name;\r
+#define ATTRIBARRAY(cname,name,type,cnt)\r
 #define ENDCLASS(cname)                    me.instanceOf##cname = 1; me.classname = #cname; return me; }\r
index a17b7c0..9bd2c5d 100644 (file)
@@ -6,7 +6,7 @@ print "\n";
 while(<DATA>)\r
 {\r
        chomp;\r
-       if(/^\s*(?:SKINFLOAT|SKINVECTOR)\(([A-Z_]+), ([-'0-9. ]+)\);$/)\r
+       if(/^\s*(?:SKINFLOAT|SKINVECTOR)\(([A-Z_]+), ([-'0-9. ]+)\);$/) #'\r
        {\r
                printf "%-31s %s\n", $1, $2;\r
        }\r
index e12e5aa..142156c 100644 (file)
@@ -17,7 +17,7 @@
 //#define SKINSTRING(name,def) case #name: break\r
 #define SKINSTRING(name,def) case #name: SKIN##name = strzone(value); break\r
        // I know this leaks memory when skin is read multiple times. Screw it.\r
-#define SKINEND case "": break; case "//": break; default: print("Invalid key in skin file: ", key, "\n"); } }\r
+#define SKINEND case "": break; case "//": break; default: dprint("Invalid key in skin file: ", key, "\n"); } }\r
 #include "skin-customizables.inc"\r
 #undef SKINEND\r
 #undef SKINSTRING\r
index 9c10b2b..4acac9f 100644 (file)
@@ -5,9 +5,9 @@ CLASS(VoretInputBox) EXTENDS(InputBox)
        METHOD(VoretInputBox, setText, void(entity, string))\r
        ATTRIB(VoretInputBox, fontSize, float, SKINFONTSIZE_NORMAL)\r
        ATTRIB(VoretInputBox, image, string, SKINGFX_INPUTBOX)\r
-       ATTRIB(VoretInputBox, onChange, void(entity, entity), SUB_Null)\r
+       ATTRIB(VoretInputBox, onChange, void(entity, entity), func_null)\r
        ATTRIB(VoretInputBox, onChangeEntity, entity, NULL)\r
-       ATTRIB(VoretInputBox, onEnter, void(entity, entity), SUB_Null)\r
+       ATTRIB(VoretInputBox, onEnter, void(entity, entity), func_null)\r
        ATTRIB(VoretInputBox, onEnterEntity, entity, NULL)\r
        ATTRIB(VoretInputBox, marginLeft, float, SKINMARGIN_INPUTBOX_CHARS)\r
        ATTRIB(VoretInputBox, marginRight, float, SKINMARGIN_INPUTBOX_CHARS)\r
@@ -53,7 +53,8 @@ void setTextVoretInputBox(entity me, string new)
        if(me.text != new)\r
        {\r
                setTextInputBox(me, new);\r
-               me.onChange(me, me.onChangeEntity);\r
+               if(me.onChange)\r
+                       me.onChange(me, me.onChangeEntity);\r
        }\r
        else\r
                setTextInputBox(me, new);\r
index 48cf4d7..5f06458 100644 (file)
@@ -8,8 +8,8 @@
 \r
 void antilag_dummy()\r
 {\r
-       self.antilag_times = 0;\r
-       self.antilag_origins = '0 0 0';\r
+       self.antilag_times[0] = 0;\r
+       self.antilag_origins[0] = '0 0 0';\r
 }\r
 \r
 void antilag_record(entity e, float t)\r
index 20b22a6..72adda8 100644 (file)
@@ -1034,7 +1034,7 @@ void havocbot_chooseweapon()
                }
        }
 
-#ifdef 0
+#if 0
        // TODO: This disabled code is not working well and got replaced by custom weapon priorities.
        // However, this logic should be refactored and moved to weapons code so each new weapon can be
        // evaluated dynamically by bots without updating the "ai" or config files.     --mand1nga
index ca7e37e..20229da 100644 (file)
@@ -67,12 +67,13 @@ float bot_havecommand(entity bot, float idx)
 .string bot_placenames[MAX_BOT_PLACES];
 entity bot_getplace(string placename)
 {
+       string s;
        entity e;
        if(substring(placename, 0, 1) == "@")
        {
                float i, p;
                placename = substring(placename, 1, -1);
-               string s, s2;
+               string s2;
                for(i = 0; i < self.bot_places_count; ++i)
                        if(self.(bot_placenames[i]) == placename)
                                return self.(bot_places[i]);
index d3aa8e5..40ab462 100644 (file)
@@ -339,10 +339,9 @@ void RaceCarPhysics()
        self.angles_z = 0;\r
        makevectors(self.angles); // new forward direction!\r
 \r
+       float myspeed, upspeed, steerfactor, accelfactor;\r
        if(self.flags & FL_ONGROUND || g_bugrigs_air_steering)\r
        {\r
-               float myspeed, upspeed, steerfactor, accelfactor;\r
-\r
                myspeed = self.velocity * v_forward;\r
                upspeed = self.velocity * v_up;\r
 \r
index 4ee6f9b..1fe073a 100644 (file)
@@ -923,12 +923,12 @@ void Say(entity source, float teamsay, entity privatesay, string msgin, float fl
 \r
        // FLOOD CONTROL\r
        flood = 0;\r
+       var .float flood_field;\r
        if(floodcontrol)\r
        {\r
                float flood_spl;\r
                float flood_burst;\r
                float flood_lmax;\r
-               var .float flood_field;\r
                float lines;\r
                if(privatesay)\r
                {\r
@@ -982,8 +982,10 @@ void Say(entity source, float teamsay, entity privatesay, string msgin, float fl
                }\r
        }\r
 \r
-       if (timeoutStatus == 2) //when game is paused, no flood protection\r
-               source.flood_field = flood = 0;\r
+       if (timeoutStatus == 2) { //when game is paused, no flood protection\r
+               source.flood_field = 0;\r
+               flood = 0;\r
+       }\r
 \r
        if(flood == 2)\r
        {\r
@@ -1204,8 +1206,8 @@ void UpdatePlayerSounds()
        self.skin_for_playersound = self.skin;\r
        ClearPlayerSounds();\r
        LoadPlayerSounds("sound/player/default.sounds", 1);\r
-       if not(LoadPlayerSounds(strcat(self.model, "_", ftos(self.skin), ".", "sounds"), 0))\r
-               LoadPlayerSounds(strcat(self.model, ".", "sounds"), 0);\r
+       LoadPlayerSounds(strcat(self.model, "_", ftos(self.skin), ".", "sounds"), 0);\r
+       LoadPlayerSounds(strcat(self.model, ".", "sounds"), 0);\r
 }\r
 \r
 void GlobalSound(string sample, float chan, float voicetype, float vol)\r
index 34ad1f3..e492112 100644 (file)
@@ -110,8 +110,14 @@ void func_breakable_look_restore()
 void func_breakable_behave_destroyed()\r
 {\r
        self.health = self.max_health;\r
-       self.takedamage = DAMAGE_NO;\r
-       self.event_damage = SUB_Null;\r
+       #ifndef GMQCC\r
+               self.event_damage           = SUB_Null;\r
+               self.takedamage             = DAMAGE_NO;\r
+       #else\r
+               // GMQCCs NIL keyword is the BOMB!\r
+               self.event_damage           = nil;\r
+               self.takedamage             = nil;\r
+       #endif\r
        self.state = 1;\r
        setsize(self, '0 0 0', '0 0 0');\r
        func_breakable_colormod();\r
index 496f532..5ad223c 100644 (file)
@@ -674,3 +674,4 @@ float InitMovingBrushTrigger()
        }\r
        return 1;\r
 };\r
+#endif\r
index 345d605..aa67f03 100644 (file)
@@ -80,7 +80,7 @@ float world_initialized;
 string GetMapname();\r
 string GetGametype();\r
 void GotoNextMap();\r
-void ShuffleMaplist()\r
+void ShuffleMaplist();\r
 float() DoNextMapOverride;\r
 \r
 void SetDefaultAlpha()\r
index 7ffc580..9e35d16 100644 (file)
@@ -33,7 +33,14 @@ float kh_no_radar_circles;
 .float siren_time;  //  time delay the siren\r
 //.float stuff_time;  //  time delay to stuffcmd a cvar\r
 \r
-float test[17] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};\r
+// sigh GMQCC needs to implement this yet.\r
+float test[17]\r
+#ifndef GMQCC\r
+= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};\r
+#else\r
+;\r
+#endif\r
+\r
 //test[0] = status of dropped keys, test[1 - 16] = player #\r
 //replace 17 with cvar("maxplayers") or similar !!!!!!!!!\r
 //for(i = 0; i < maxplayers; ++i)\r
index a410045..4b63d01 100644 (file)
@@ -30,5 +30,5 @@ void kh_update_state();
 #define STR_ITEM_KH_KEY "item_kh_key"\r
 typedef void(void) kh_Think_t;\r
 var kh_Think_t kh_Controller_Thinkfunc;\r
-void kh_Controller_SetThink(float t, string msg, kh_Think_t func)\r
-void kh_Key_Remove(entity key)\r
+void kh_Controller_SetThink(float t, string msg, kh_Think_t func);\r
+void kh_Key_Remove(entity key);\r
index f16f60a..d30b368 100644 (file)
@@ -181,22 +181,27 @@ void GameLogClose()
     }\r
 }\r
 \r
-vector PL_VIEW_OFS;\r
-vector PL_MIN;\r
-vector PL_MAX;\r
-vector PL_CROUCH_VIEW_OFS;\r
-vector PL_CROUCH_MIN;\r
-vector PL_CROUCH_MAX;\r
+// you need an init method to set them somewhere\r
+// default values simply become constant\r
+const vector PL_VIEW_OFS;\r
+const vector PL_MIN;\r
+const vector PL_MAX;\r
+const vector PL_CROUCH_VIEW_OFS;\r
+const vector PL_CROUCH_MIN;\r
+const vector PL_CROUCH_MAX;\r
 \r
 float spawnpoint_nag;\r
 void relocate_spawnpoint()\r
 {\r
+       // this code wouldn't work anyways, they're constants by having default assignment in a header.\r
+#if 0\r
     PL_VIEW_OFS                             = stov(cvar_string("sv_player_viewoffset"));\r
     PL_MIN                                  = stov(cvar_string("sv_player_mins"));\r
     PL_MAX                                  = stov(cvar_string("sv_player_maxs"));\r
     PL_CROUCH_VIEW_OFS                      = stov(cvar_string("sv_player_crouch_viewoffset"));\r
     PL_CROUCH_MIN                           = stov(cvar_string("sv_player_crouch_mins"));\r
     PL_CROUCH_MAX                           = stov(cvar_string("sv_player_crouch_maxs"));\r
+#endif\r
 \r
     // nudge off the floor\r
     setorigin(self, self.origin + '0 0 1');\r
index 0826d1e..b52bec9 100644 (file)
@@ -595,7 +595,11 @@ void onslaught_generator_damage(entity inflictor, entity attacker, float damage,
                self.islinked = FALSE;\r
                self.isshielded = FALSE;\r
                self.takedamage = DAMAGE_NO; // can't be hurt anymore\r
+#ifndef GMQCC\r
                self.event_damage = SUB_Null; // won't do anything if hurt\r
+#else\r
+               self.event_damage = nil;\r
+#endif\r
                self.count = 0; // reset counter\r
                self.think = onslaught_generator_deaththink; // explosion sequence\r
                self.nextthink = time; // start exploding immediately\r
index 1aa1c66..d6b8c75 100644 (file)
@@ -32,7 +32,7 @@ vector pathlib_wateroutnode(vector start,vector end)
     return end;\r
 }\r
 \r
-vector pathlib_swimnode(vector start,vector end)\r
+vector pathlib_swimnode(vector start,vector end, float /*unused*/)\r
 {\r
     pathlib_movenode_goodnode = 0;\r
 \r
index 77de889..bdb513d 100644 (file)
@@ -60,7 +60,7 @@ vector movenode_boxmin;
 float  pathlib_movenode_goodnode;\r
 \r
 vector     pathlib_wateroutnode(vector start, vector end);\r
-vector     pathlib_swimnode(vector start, vector end);\r
+vector     pathlib_swimnode(vector start, vector end, float /*unused*/);\r
 vector     pathlib_flynode(vector start, vector end);\r
 vector     pathlib_walknode(vector start, vector end, float doedge);\r
 var vector pathlib_movenode(vector start, vector end, float doedge);\r
index eaefeb2..0d9cda6 100644 (file)
@@ -1,4 +1,3 @@
-#pragma flag off fastarrays // make dp behave with new fteqcc versions. remove when dp bug with fteqcc fastarrays is fixed\r
 #define SVQC\r
 \r
 // DO NOT modify the contents of this file, or you will risk incompatibility with the game engine.\r
index 4ecb652..4bfa077 100644 (file)
@@ -5,6 +5,8 @@
 #define ITEM_RESPAWNTIME_INITIAL(i) (ITEM_RESPAWN_TICKS + random() * ((i).respawntime + (i).respawntimejitter - ITEM_RESPAWN_TICKS))\r
        // range: 10 .. respawntime + respawntimejitter\r
 \r
+#define Item_Func_Null null\r
+\r
 floatfield Item_CounterField(float it)\r
 {\r
        switch(it)\r
@@ -69,7 +71,7 @@ void Item_Show (entity e, float mode)
                e.colormod = '0 0 0';\r
                e.glowmod = e.colormod;\r
                e.alpha = 0;\r
-               e.customizeentityforclient = func_null;\r
+               e.customizeentityforclient = Item_Func_Null;\r
 \r
                e.spawnshieldtime = 1;\r
        }\r
@@ -81,7 +83,7 @@ void Item_Show (entity e, float mode)
                e.colormod = '0 0 0';\r
                e.glowmod = e.colormod;\r
                e.alpha = 0;\r
-               e.customizeentityforclient = func_null;\r
+               e.customizeentityforclient = Item_Func_Null;\r
 \r
                e.spawnshieldtime = 1;\r
        }\r
@@ -105,7 +107,7 @@ void Item_Show (entity e, float mode)
                e.colormod = stov(cvar_string("g_ghost_items_color"));\r
                e.glowmod = e.colormod;\r
                e.alpha = g_ghost_items;\r
-               e.customizeentityforclient = func_null;\r
+               e.customizeentityforclient = Item_Func_Null;\r
 \r
                e.spawnshieldtime = 1;\r
        }\r
@@ -117,7 +119,7 @@ void Item_Show (entity e, float mode)
                e.colormod = stov(cvar_string("g_ghost_items_color"));\r
                e.glowmod = e.colormod;\r
                e.alpha = 0;\r
-               e.customizeentityforclient = func_null;\r
+               e.customizeentityforclient = Item_Func_Null;\r
 \r
                e.spawnshieldtime = 1;\r
        }\r
index e7ac915..641bb56 100644 (file)
@@ -1404,8 +1404,14 @@ float SECRET_1ST_DOWN = 4;               // 1st move is down from arrow
 float SECRET_NO_SHOOT = 8;             // only opened by trigger\r
 float SECRET_YES_SHOOT = 16;   // shootable even if targeted\r
 \r
-\r
+// This is a bug in the code .. this is the HACK to work around the bug since casts don't exist yet.\r
+#ifdef GMQCC\r
+void fd_secret_use_core(entity, entity, float, float, vector, vector)\r
+#else\r
+void fd_secret_use();\r
+void fd_secret_use_core() { fd_secret_use(); }\r
 void fd_secret_use()\r
+#endif\r
 {\r
        local float temp;\r
        string message_save;\r
@@ -1455,6 +1461,12 @@ void fd_secret_use()
                sound(self, CHAN_TRIGGER, self.noise2, VOL_BASE, ATTN_NORM);\r
 };\r
 \r
+#ifdef GMQCC\r
+void fd_secret_use() {\r
+       fd_secret_use_core(nil, nil, nil, nil, nil, nil);\r
+}\r
+#endif\r
+\r
 // Wait after first movement...\r
 void fd_secret_move1()\r
 {\r
@@ -1610,7 +1622,7 @@ void spawnfunc_func_door_secret()
        {\r
                self.health = 10000;\r
                self.takedamage = DAMAGE_YES;\r
-               self.event_damage = fd_secret_use;\r
+               self.event_damage = fd_secret_use_core;\r
        }\r
        self.oldorigin = self.origin;\r
        if (!self.wait)\r
index b917287..a78f4b9 100644 (file)
@@ -42,20 +42,20 @@ void junk_function ()
        self.light_lev = 0;\r
        self.color = '0 0 0';\r
        self.style = 0;\r
-       self.jumppadsused = world;\r
+       self.jumppadsused[0] = world;\r
        self.disableclientprediction = 0;\r
-       self.contentstransition = SUB_Null;\r
+       self.contentstransition = null;\r
        self.dphitcontentsmask = 0;\r
        self.modelflags = 0;\r
-       self.attack_finished_for = 0; // why is this even valid? Spiiiiiiiiiiiiiiiiiiiiike!\r
+       self.attack_finished_for[0] = 0; // why is this even valid? Spiiiiiiiiiiiiiiiiiiiiike!\r
        self.notsingle = 0;\r
        trace_dphittexturename = "";\r
        require_spawnfunc_prefix = 1;\r
-       self.movetypesteplandevent = SUB_Null;\r
+       self.movetypesteplandevent = null;\r
        self.viewzoom = 0;\r
-       self.cvar_cl_weaponpriorities = "";\r
-       self.scores = 0;\r
-       self.teamscores = 0;\r
+       self.cvar_cl_weaponpriorities[0] = "";\r
+       self.scores[0] = 0;\r
+       self.teamscores[0] = 0;\r
        gettaginfo_parent = 0;\r
        gettaginfo_name = "";\r
        gettaginfo_offset = '0 0 0';\r
index c8df28d..c02f4a7 100644 (file)
@@ -489,9 +489,9 @@ float   turret_stdproc_targetscore_support(entity e_turret,entity e_target);
 * Aim functions\r
 */\r
 /// Generic aimer guided by self.aim_flags\r
-vector turret_stdproc_aim_generic()\r
+vector turret_stdproc_aim_generic();\r
 // Straight line, current location\r
-//vector  turret_stdproc_aim_simple()\r
+//vector  turret_stdproc_aim_simple();\r
 \r
 /*\r
 * Turret turning & pitch\r
index cb7c265..80cfd6a 100644 (file)
@@ -147,7 +147,11 @@ void turret_stdproc_die()
     self.customizeentityforclient = SUB_False;\r
     self.tur_head.customizeentityforclient = SUB_False;\r
 \r
+#ifndef GMQCC\r
     self.event_damage           = SUB_Null;\r
+#else\r
+       self.event_damage           = nil;\r
+#endif\r
     self.takedamage             = DAMAGE_NO;\r
 \r
     self.effects            = 0;\r
@@ -324,8 +328,13 @@ void turret_stdproc_damage (entity inflictor, entity attacker, float damage, flo
 \r
     if (self.health <= 0)\r
     {\r
+#ifndef GMQCC\r
         self.event_damage           = SUB_Null;\r
         self.tur_head.event_damage  = SUB_Null;\r
+#else\r
+        self.event_damage           = nil;\r
+        self.tur_head.event_damage  = nil;\r
+#endif\r
         self.takedamage             = DAMAGE_NO;\r
         self.nextthink = time;\r
         self.think = turret_stdproc_die;\r
index 8f4226c..a4edfdd 100644 (file)
@@ -471,7 +471,7 @@ void fireBullet (vector start, vector dir, float spread, float damage, float for
 void W_PrepareExplosionByDamage(entity attacker, void() explode)\r
 {\r
        self.takedamage = DAMAGE_NO;\r
-       self.event_damage = SUB_Null;\r
+       self.event_damage = null;\r
        self.owner = attacker;\r
 \r
        // do not explode NOW but in the NEXT FRAME!\r
index 3affb26..cdae9fd 100644 (file)
 - 0.8 BUG: Someone's reporting swallow speed doesn't change with the cvar\r
 \r
 - 0.8: Make some of the foxes (bots) in the campaign male\r
+\r
+- 0.8 BUG: In player.sounds files, "tag female" is used for the male voices too\r
+\r
+- 0.8: Fix all the gmqcc warnings when using the default Xonotic parameters\r