Implement RPG / Free Roam gametype. Next step is to remove scoring under this type...
authorMirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>
Thu, 2 Sep 2010 23:27:04 +0000 (02:27 +0300)
committerMirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>
Thu, 2 Sep 2010 23:27:04 +0000 (02:27 +0300)
data/defaultVoretournament.cfg
data/maps/voretown.mapinfo
data/qcsrc/common/constants.qh
data/qcsrc/common/mapinfo.qc
data/qcsrc/common/mapinfo.qh
data/qcsrc/common/util.qc
data/qcsrc/menu/voret/dialog_multiplayer_create.c
data/qcsrc/menu/voret/dialog_multiplayer_create_mapinfo.c
data/qcsrc/server/defs.qh
data/qcsrc/server/g_world.qc
data/qcsrc/server/teamplay.qc

index a09426e3c79bc966b30a0bbca87dcef56540cfe0..e84356154e483fc0c599debb74e2c1a4df451a46 100644 (file)
@@ -605,6 +605,9 @@ set g_race_teams 0  "when 2, 3, or 4, the race is played as a team game (the team
 // cts\r
 set g_cts 0 "CTS: complete the stage"\r
 \r
 // cts\r
 set g_cts 0 "CTS: complete the stage"\r
 \r
+// rpg\r
+set g_rpg 0 "RPG: RolePlay / Free Roam gametype"\r
+\r
 // server game balance settings\r
 // powerup balance settings\r
 // weapon balance settings follow\r
 // server game balance settings\r
 // powerup balance settings\r
 // weapon balance settings follow\r
index 9b603f73818ae4703d7cfaa7f04cc71cbe17a2b1..5a3b90185585df9d253ecec500dffddadc0572f6 100644 (file)
@@ -1,10 +1,6 @@
-title Gallery\r
-description A medieval themed picture gallery\r
+title Vore Town\r
+description A medieval temple\r
 author MirceaKitsune\r
 //cdtrack stone_fortress\r
 author MirceaKitsune\r
 //cdtrack stone_fortress\r
-type dm 30 20\r
-settemp_for_type all g_start_weapon_grabber 0\r
-settemp_for_type all bot_nofire 1\r
-settemp_for_type all sv_gravity 400\r
-settemp_for_type all bot_number 7\r
-//hidden\r
+has weapons\r
+type rpg 20
\ No newline at end of file
index b31aa9842fd80db20af9a2f7c30b78cec534ecf6..74307aef40f1d868228afed4a5992e77d67f1111 100644 (file)
@@ -37,6 +37,7 @@ const float GAME_ONSLAUGHT    = 9;
 const float GAME_RACE  = 10;\r
 const float GAME_CTS = 11;\r
 const float GAME_CA            = 12;\r
 const float GAME_RACE  = 10;\r
 const float GAME_CTS = 11;\r
 const float GAME_CA            = 12;\r
+const float GAME_RPG           = 13;\r
 \r
 const float AS_STRING          = 1;\r
 const float AS_INT             = 2;\r
 \r
 const float AS_STRING          = 1;\r
 const float AS_INT             = 2;\r
index be281a57dc4ce65b1749e97b05a631361ba53c5c..7f8c04ec74bb93ca2fd92b28c5c6b3109908628c 100644 (file)
@@ -390,7 +390,7 @@ void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType)
        if(!(pThisType & pWantedType))\r
                return;\r
        \r
        if(!(pThisType & pWantedType))\r
                return;\r
        \r
-       if(pWantedType == MAPINFO_TYPE_ASSAULT || pWantedType == MAPINFO_TYPE_ONSLAUGHT || pWantedType == MAPINFO_TYPE_RACE || pWantedType == MAPINFO_TYPE_CTS) // these modes don't use fraglimit\r
+       if(pWantedType == MAPINFO_TYPE_ASSAULT || pWantedType == MAPINFO_TYPE_ONSLAUGHT || pWantedType == MAPINFO_TYPE_RACE || pWantedType == MAPINFO_TYPE_CTS || pWantedType == MAPINFO_TYPE_RPG) // these modes don't use fraglimit\r
        {\r
                cvar_set("fraglimit", "0");\r
        }\r
        {\r
                cvar_set("fraglimit", "0");\r
        }\r
@@ -470,6 +470,7 @@ float MapInfo_Type_FromString(string t)
        else if(t == "ons")     return MAPINFO_TYPE_ONSLAUGHT;\r
        else if(t == "rc")      return MAPINFO_TYPE_RACE;\r
        else if(t == "cts")     return MAPINFO_TYPE_CTS;\r
        else if(t == "ons")     return MAPINFO_TYPE_ONSLAUGHT;\r
        else if(t == "rc")      return MAPINFO_TYPE_RACE;\r
        else if(t == "cts")     return MAPINFO_TYPE_CTS;\r
+       else if(t == "rpg")     return MAPINFO_TYPE_RPG;\r
        else if(t == "all")     return MAPINFO_TYPE_ALL;\r
        else                    return 0;\r
 }\r
        else if(t == "all")     return MAPINFO_TYPE_ALL;\r
        else                    return 0;\r
 }\r
@@ -655,6 +656,7 @@ float MapInfo_Get_ByName(string pFilename, float pAllowGenerate, float pGametype
                if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE)            fputs(fh, "type rc 20 5 7 15\n");\r
                if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT)       fputs(fh, "type ons 20\n");\r
                if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTS)             fputs(fh, "type cts 20 -1\n");\r
                if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE)            fputs(fh, "type rc 20 5 7 15\n");\r
                if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT)       fputs(fh, "type ons 20\n");\r
                if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTS)             fputs(fh, "type cts 20 -1\n");\r
+               if(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RPG)             fputs(fh, "type rpg -1\n");\r
 \r
                fh2 = fopen(strcat("scripts/", pFilename, ".arena"), FILE_READ);\r
                if(fh2 >= 0)\r
 \r
                fh2 = fopen(strcat("scripts/", pFilename, ".arena"), FILE_READ);\r
                if(fh2 >= 0)\r
@@ -916,6 +918,8 @@ float MapInfo_CurrentGametype()
                return MAPINFO_TYPE_RACE;\r
        else if(cvar("g_cts"))\r
                return MAPINFO_TYPE_CTS;\r
                return MAPINFO_TYPE_RACE;\r
        else if(cvar("g_cts"))\r
                return MAPINFO_TYPE_CTS;\r
+       else if(cvar("g_rpg"))\r
+               return MAPINFO_TYPE_RPG;\r
        else\r
                return MAPINFO_TYPE_DEATHMATCH;\r
 }\r
        else\r
                return MAPINFO_TYPE_DEATHMATCH;\r
 }\r
@@ -955,6 +959,7 @@ string MapInfo_GetGameTypeCvar(float t)
                case MAPINFO_TYPE_ONSLAUGHT: return "g_onslaught";\r
                case MAPINFO_TYPE_RACE: return "g_race";\r
                case MAPINFO_TYPE_CTS: return "g_cts";\r
                case MAPINFO_TYPE_ONSLAUGHT: return "g_onslaught";\r
                case MAPINFO_TYPE_RACE: return "g_race";\r
                case MAPINFO_TYPE_CTS: return "g_cts";\r
+               case MAPINFO_TYPE_RPG: return "g_rpg";\r
                default: return "";\r
        }\r
 }\r
                default: return "";\r
        }\r
 }\r
@@ -974,6 +979,7 @@ void MapInfo_SwitchGameType(float t)
        cvar_set("g_onslaught",  (t == MAPINFO_TYPE_ONSLAUGHT)       ? "1" : "0");\r
        cvar_set("g_race",       (t == MAPINFO_TYPE_RACE)            ? "1" : "0");\r
        cvar_set("g_cts",        (t == MAPINFO_TYPE_CTS)             ? "1" : "0");\r
        cvar_set("g_onslaught",  (t == MAPINFO_TYPE_ONSLAUGHT)       ? "1" : "0");\r
        cvar_set("g_race",       (t == MAPINFO_TYPE_RACE)            ? "1" : "0");\r
        cvar_set("g_cts",        (t == MAPINFO_TYPE_CTS)             ? "1" : "0");\r
+       cvar_set("g_rpg",        (t == MAPINFO_TYPE_RPG)             ? "1" : "0");\r
 }\r
 \r
 void MapInfo_LoadMap(string s)\r
 }\r
 \r
 void MapInfo_LoadMap(string s)\r
index 784c67a98b03fb37d225d3751a6688e4c1c5cccf..ccb3236107c4dcbfd8b5dbfe7df3d1e0fd36ef95 100644 (file)
@@ -10,7 +10,8 @@ float MAPINFO_TYPE_ARENA                      = 256;
 float MAPINFO_TYPE_KEYHUNT                     = 512;\r
 float MAPINFO_TYPE_CTS              = 1024;\r
 float MAPINFO_TYPE_CA                          = 2048;\r
 float MAPINFO_TYPE_KEYHUNT                     = 512;\r
 float MAPINFO_TYPE_CTS              = 1024;\r
 float MAPINFO_TYPE_CA                          = 2048;\r
-float MAPINFO_TYPE_ALL              = 4096; // this has to include all above bits\r
+float MAPINFO_TYPE_RPG              = 4096;\r
+float MAPINFO_TYPE_ALL              = 8192; // this has to include all above bits\r
 \r
 float MAPINFO_FEATURE_WEAPONS       = 1; // not defined for minstagib-only maps\r
 \r
 \r
 float MAPINFO_FEATURE_WEAPONS       = 1; // not defined for minstagib-only maps\r
 \r
index dc22dfcd5bb9462e7a295490f3556f80dff401c5..3e2f269f1a8d2c5a4358eff7a2e2de8993c2ee91 100644 (file)
@@ -467,6 +467,7 @@ string GametypeNameFromType(float g)
        else if (g == GAME_ASSAULT) return "as";\r
        else if (g == GAME_RACE) return "rc";\r
        else if (g == GAME_CTS) return "cts";\r
        else if (g == GAME_ASSAULT) return "as";\r
        else if (g == GAME_RACE) return "rc";\r
        else if (g == GAME_CTS) return "cts";\r
+       else if (g == GAME_RPG) return "rpg";\r
        return "dm";\r
 }\r
 \r
        return "dm";\r
 }\r
 \r
index a015ff2469a83c4c7b2d48742482f74f6fa77181..35104ffa90d7bc1efb732db751430b2da7146196 100644 (file)
@@ -63,6 +63,12 @@ void fillVoretServerCreateTab(entity me)
                        if(e.checked) e0 = NULL;\r
                me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_onslaught", "Onslaught"));\r
                        if(e.checked) e0 = NULL;\r
                        if(e.checked) e0 = NULL;\r
                me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_onslaught", "Onslaught"));\r
                        if(e.checked) e0 = NULL;\r
+       me.TR(me);\r
+               me.TD(me, 1, 0.5, me.playerNameLabel = makeVoretTextLabel(0, "Other:"));\r
+                       me.playerNameLabelAlpha = me.playerNameLabel.alpha;\r
+               n = 1;\r
+               me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_rpg", "Role Play"));\r
+                       if(e.checked) e0 = NULL;\r
                if(e0)\r
                {\r
                        //print("NO CHECK\n");\r
                if(e0)\r
                {\r
                        //print("NO CHECK\n");\r
index d40510768f4abcac20c06dd71b993fa7dd6f0778..b640ee8687cd85fe128e71ce36c67cf335b59221 100644 (file)
@@ -26,6 +26,7 @@ CLASS(VoretMapInfoDialog) EXTENDS(VoretDialog)
        ATTRIB(VoretMapInfoDialog, typeOnslaughtLabel, entity, NULL)\r
        ATTRIB(VoretMapInfoDialog, typeRaceLabel, entity, NULL)\r
        ATTRIB(VoretMapInfoDialog, typeCTSLabel, entity, NULL)\r
        ATTRIB(VoretMapInfoDialog, typeOnslaughtLabel, entity, NULL)\r
        ATTRIB(VoretMapInfoDialog, typeRaceLabel, entity, NULL)\r
        ATTRIB(VoretMapInfoDialog, typeCTSLabel, entity, NULL)\r
+       ATTRIB(VoretMapInfoDialog, typeRPGLabel, entity, NULL)\r
 \r
        ATTRIB(VoretMapInfoDialog, currentMapIndex, float, 0)\r
        ATTRIB(VoretMapInfoDialog, currentMapBSPName, string, string_null)\r
 \r
        ATTRIB(VoretMapInfoDialog, currentMapIndex, float, 0)\r
        ATTRIB(VoretMapInfoDialog, currentMapBSPName, string, string_null)\r
@@ -79,6 +80,7 @@ void loadMapInfoVoretMapInfoDialog(entity me, float i, entity mlb)
        me.typeOnslaughtLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT);\r
        me.typeRaceLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE);\r
        me.typeCTSLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTS);\r
        me.typeOnslaughtLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_ONSLAUGHT);\r
        me.typeRaceLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RACE);\r
        me.typeCTSLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_CTS);\r
+       me.typeRPGLabel.disabled = !(MapInfo_Map_supportedGametypes & MAPINFO_TYPE_RPG);\r
 \r
        MapInfo_ClearTemps();\r
 }\r
 \r
        MapInfo_ClearTemps();\r
 }\r
@@ -120,10 +122,10 @@ void fillVoretMapInfoDialog(entity me)
                        me.typeLMSLabel = e;\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Arena"));\r
                        me.typeArenaLabel = e;\r
                        me.typeLMSLabel = e;\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Arena"));\r
                        me.typeArenaLabel = e;\r
-       me.TR(me);\r
-               me.TDempty(me, 0.2);\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Domination"));\r
                        me.typeDominationLabel = e;\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Domination"));\r
                        me.typeDominationLabel = e;\r
+       me.TR(me);\r
+               me.TDempty(me, 0.2);\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Key Hunt"));\r
                        me.typeKeyHuntLabel = e;\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "CTF"));\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Key Hunt"));\r
                        me.typeKeyHuntLabel = e;\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "CTF"));\r
@@ -132,14 +134,16 @@ void fillVoretMapInfoDialog(entity me)
                        me.typeCALabel = e;\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Assault"));\r
                        me.typeAssaultLabel = e;\r
                        me.typeCALabel = e;\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Assault"));\r
                        me.typeAssaultLabel = e;\r
-       me.TR(me);\r
-               me.TDempty(me, 0.2);\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Onslaught"));\r
                        me.typeOnslaughtLabel = e;\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Onslaught"));\r
                        me.typeOnslaughtLabel = e;\r
+       me.TR(me);\r
+               me.TDempty(me, 0.2);\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Race"));\r
                        me.typeRaceLabel = e;\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "CTS"));\r
                        me.typeCTSLabel = e;\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "Race"));\r
                        me.typeRaceLabel = e;\r
                me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "CTS"));\r
                        me.typeCTSLabel = e;\r
+               me.TD(me, 1, wgt, e = makeVoretTextLabel(0, "RPG"));\r
+                       me.typeRPGLabel = e;\r
 \r
        me.gotoRC(me, me.rows - 2, 0);\r
                me.TD(me, 1, me.columns, e = makeVoretTextLabel(0.5, ""));\r
 \r
        me.gotoRC(me, me.rows - 2, 0);\r
                me.TD(me, 1, me.columns, e = makeVoretTextLabel(0.5, ""));\r
index 352162d9ff9458991340b209502acd818f6bbd38..7953f82281dc82f6e993e6082b2dc21c0980e167 100644 (file)
@@ -19,7 +19,7 @@ float require_spawnfunc_prefix; // if this float exists, only functions with spa
 \r
 float ctf_score_value(string parameter);\r
 \r
 \r
 float ctf_score_value(string parameter);\r
 \r
-float g_dm, g_domination, g_ctf, g_tdm, g_keyhunt, g_onslaught, g_assault, g_arena, g_ca, g_lms, g_race, g_cts;\r
+float g_dm, g_domination, g_ctf, g_tdm, g_keyhunt, g_onslaught, g_assault, g_arena, g_ca, g_lms, g_race, g_cts, g_rpg;\r
 float g_cloaked, g_footsteps, g_jump_grunt, g_midair, g_norecoil, g_vampire, g_bloodloss;\r
 float g_warmup_limit;\r
 float g_warmup_allguns;\r
 float g_cloaked, g_footsteps, g_jump_grunt, g_midair, g_norecoil, g_vampire, g_bloodloss;\r
 float g_warmup_limit;\r
 float g_warmup_allguns;\r
index badb765ae3cf77e18527da25fb8fc1f78005ccc7..12b021afd3180f9667ede6a1208ca59cef42bc4d 100644 (file)
@@ -330,6 +330,7 @@ void cvar_changes_init()
                BADCVAR("g_race");\r
                BADCVAR("g_cts");\r
                BADCVAR("g_tdm");\r
                BADCVAR("g_race");\r
                BADCVAR("g_cts");\r
                BADCVAR("g_tdm");\r
+               BADCVAR("g_rpg");\r
                BADCVAR("teamplay");\r
 \r
                // long\r
                BADCVAR("teamplay");\r
 \r
                // long\r
index 1bdef27dc627d74c0419b9d0a0634321fa730789..4f5dbaa544029607a1ace536e04ca92657e0dc5a 100644 (file)
@@ -95,6 +95,7 @@ void WriteGameCvars()
        cvar_set("g_onslaught", ftos(g_onslaught));\r
        cvar_set("g_race", ftos(g_race));\r
        cvar_set("g_cts", ftos(g_cts));\r
        cvar_set("g_onslaught", ftos(g_onslaught));\r
        cvar_set("g_race", ftos(g_race));\r
        cvar_set("g_cts", ftos(g_cts));\r
+       cvar_set("g_rpg", ftos(g_rpg));\r
 }\r
 \r
 void ReadGameCvars()\r
 }\r
 \r
 void ReadGameCvars()\r
@@ -119,6 +120,7 @@ void ReadGameCvars()
                found += (g_onslaught = (!found && (prev != GAME_ONSLAUGHT) && cvar("g_onslaught")));\r
                found += (g_race = (!found && (prev != GAME_RACE) && cvar("g_race")));\r
                found += (g_cts = (!found && (prev != GAME_CTS) && cvar("g_cts")));\r
                found += (g_onslaught = (!found && (prev != GAME_ONSLAUGHT) && cvar("g_onslaught")));\r
                found += (g_race = (!found && (prev != GAME_RACE) && cvar("g_race")));\r
                found += (g_cts = (!found && (prev != GAME_CTS) && cvar("g_cts")));\r
+               found += (g_rpg = (!found && (prev != GAME_RPG) && cvar("g_rpg")));\r
 \r
                if(found)\r
                        break;\r
 \r
                if(found)\r
                        break;\r
@@ -343,6 +345,12 @@ void InitGameplayMode()
                leadlimit_override = 0;\r
        }\r
 \r
                leadlimit_override = 0;\r
        }\r
 \r
+       if(g_rpg)\r
+       {\r
+               game = GAME_RPG;\r
+               gamemode_name = "Role Play";\r
+       }\r
+\r
        if(teams_matter)\r
                entcs_init();\r
 \r
        if(teams_matter)\r
                entcs_init();\r
 \r