X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmapinfo.qc;h=9dd02ca4c2955e25b1c1347343ee0a7e62d9a7b7;hb=616650bb18362024afeed71fed91d33dc1708d09;hp=49a7e2978be835af583fd0cc248f788594ac416b;hpb=c76c3160a6e37c4972a0d97aa708304105148b54;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc index 49a7e2978..9dd02ca4c 100644 --- a/qcsrc/common/mapinfo.qc +++ b/qcsrc/common/mapinfo.qc @@ -472,8 +472,7 @@ void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType, fl { sa = car(s); if(sa != "") - if(cvar("g_ctf_win_mode") < 2) - cvar_set("fraglimit", sa); + cvar_set("fraglimit", sa); s = cdr(s); } @@ -535,26 +534,11 @@ void _MapInfo_Map_ApplyGametype(string s, float pWantedType, float pThisType, fl string _MapInfo_GetDefaultEx(float t) { - switch(t) - { - case MAPINFO_TYPE_DEATHMATCH: return "timelimit=20 pointlimit=30 leadlimit=0"; - case MAPINFO_TYPE_TEAM_DEATHMATCH: return "timelimit=20 pointlimit=50 teams=2 leadlimit=0"; - case MAPINFO_TYPE_DOMINATION: return "timelimit=20 pointlimit=200 teams=2 leadlimit=0"; - case MAPINFO_TYPE_CTF: return "timelimit=20 pointlimit=300 caplimit=10 leadlimit=0"; - case MAPINFO_TYPE_RUNEMATCH: return "timelimit=20 pointlimit=200 leadlimit=0"; - case MAPINFO_TYPE_LMS: return "timelimit=20 lives=9 leadlimit=0"; - case MAPINFO_TYPE_ARENA: return "timelimit=20 pointlimit=10 leadlimit=0"; - case MAPINFO_TYPE_CA: return "timelimit=20 pointlimit=10 leadlimit=0"; - case MAPINFO_TYPE_KEYHUNT: return "timelimit=20 pointlimit=1000 teams=3 leadlimit=0"; - case MAPINFO_TYPE_ASSAULT: return "timelimit=20"; - case MAPINFO_TYPE_RACE: return "timelimit=20 qualifying_timelimit=5 laplimit=7 teamlaplimit=15 leadlimit=0"; - case MAPINFO_TYPE_ONSLAUGHT: return "timelimit=20"; - case MAPINFO_TYPE_NEXBALL: return "timelimit=20 pointlimit=5 leadlimit=0"; - case MAPINFO_TYPE_CTS: return "timelimit=20 skill=-1"; - case MAPINFO_TYPE_FREEZETAG: return "timelimit=20 pointlimit=10 teams=2 leadlimit=0"; - case MAPINFO_TYPE_KEEPAWAY: return "timelimit=20 pointlimit=30"; - default: return ""; - } + entity e; + for(e = MapInfo_Type_first; e; e = e.enemy) + if(t == e.weapons) + return e.model2; + return ""; } void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType) @@ -562,7 +546,6 @@ void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType) string sa, k, v; float p; string fraglimit_normal; - string fraglimit_caps; string fraglimit_teams; MapInfo_Map_supportedGametypes |= pThisType; @@ -580,7 +563,6 @@ void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType) cvar_set("g_race_qualifying_timelimit", cvar_defstring("g_race_qualifying_timelimit")); fraglimit_normal = string_null; - fraglimit_caps = string_null; fraglimit_teams = string_null; s = strcat(_MapInfo_GetDefaultEx(pWantedType), " ", s); @@ -612,14 +594,10 @@ void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType) { cvar_set("leadlimit", v); } - else if(k == "pointlimit" || k == "fraglimit" || k == "lives" || k == "laplimit") + else if(k == "pointlimit" || k == "fraglimit" || k == "lives" || k == "laplimit" || k == "caplimit") { fraglimit_normal = v; } - else if(k == "caplimit") - { - fraglimit_caps = v; - } else if(k == "teampointlimit" || k == "teamlaplimit") { fraglimit_teams = v; @@ -644,12 +622,7 @@ void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType) } } - if(pWantedType == MAPINFO_TYPE_CTF && cvar("g_ctf_win_mode") < 2) - { - if(fraglimit_caps) - cvar_set("fraglimit", fraglimit_caps); - } - else if(pWantedType == MAPINFO_TYPE_RACE && cvar("g_race_teams") >= 2) + if(pWantedType == MAPINFO_TYPE_RACE && cvar("g_race_teams") >= 2) { if(fraglimit_teams) cvar_set("fraglimit", fraglimit_teams); @@ -663,46 +636,51 @@ void _MapInfo_Map_ApplyGametypeEx(string s, float pWantedType, float pThisType) float MapInfo_Type_FromString(string t) { - if (t == "dm") return MAPINFO_TYPE_DEATHMATCH; - else if(t == "tdm") return MAPINFO_TYPE_TEAM_DEATHMATCH; - else if(t == "dom") return MAPINFO_TYPE_DOMINATION; - else if(t == "ctf") return MAPINFO_TYPE_CTF; - else if(t == "rune") return MAPINFO_TYPE_RUNEMATCH; - else if(t == "lms") return MAPINFO_TYPE_LMS; - else if(t == "arena") return MAPINFO_TYPE_ARENA; - else if(t == "ca") return MAPINFO_TYPE_CA; - else if(t == "kh") return MAPINFO_TYPE_KEYHUNT; - else if(t == "as") return MAPINFO_TYPE_ASSAULT; - else if(t == "ons") return MAPINFO_TYPE_ONSLAUGHT; - else if(t == "rc") return MAPINFO_TYPE_RACE; - else if(t == "nexball") return MAPINFO_TYPE_NEXBALL; - else if(t == "cts") return MAPINFO_TYPE_CTS; - else if(t == "freezetag") return MAPINFO_TYPE_FREEZETAG; - else if(t == "keepaway") return MAPINFO_TYPE_KEEPAWAY; - else if(t == "all") return MAPINFO_TYPE_ALL; - else return 0; + entity e; + if(t == "nexball") + { + print("MapInfo_Type_FromString (probably ", MapInfo_Map_bspname, "): using deprecated name '", t); + t = "nb"; + print("'. Should use '", t, "'.\n"); + } + if(t == "freezetag") + { + print("MapInfo_Type_FromString (probably ", MapInfo_Map_bspname, "): using deprecated name '", t); + t = "ft"; + print("'. Should use '", t, "'.\n"); + } + if(t == "keepaway") + { + print("MapInfo_Type_FromString (probably ", MapInfo_Map_bspname, "): using deprecated name '", t); + t = "ka"; + print("'. Should use '", t, "'.\n"); + } + if(t == "all") + return MAPINFO_TYPE_ALL; + for(e = MapInfo_Type_first; e; e = e.enemy) + if(t == e.mdl) + return e.weapons; + return 0; } string MapInfo_Type_ToString(float t) { - if (t == MAPINFO_TYPE_DEATHMATCH) return "dm"; - else if(t == MAPINFO_TYPE_TEAM_DEATHMATCH) return "tdm"; - else if(t == MAPINFO_TYPE_DOMINATION) return "dom"; - else if(t == MAPINFO_TYPE_CTF) return "ctf"; - else if(t == MAPINFO_TYPE_RUNEMATCH) return "rune"; - else if(t == MAPINFO_TYPE_LMS) return "lms"; - else if(t == MAPINFO_TYPE_ARENA) return "arena"; - else if(t == MAPINFO_TYPE_CA) return "ca"; - else if(t == MAPINFO_TYPE_KEYHUNT) return "kh"; - else if(t == MAPINFO_TYPE_ASSAULT) return "as"; - else if(t == MAPINFO_TYPE_ONSLAUGHT) return "ons"; - else if(t == MAPINFO_TYPE_RACE) return "rc"; - else if(t == MAPINFO_TYPE_NEXBALL) return "nexball"; - else if(t == MAPINFO_TYPE_CTS) return "cts"; - else if(t == MAPINFO_TYPE_FREEZETAG) return "freezetag"; - else if(t == MAPINFO_TYPE_KEEPAWAY) return "keepaway"; - else if(t == MAPINFO_TYPE_ALL) return "all"; - else return ""; + entity e; + if(t == MAPINFO_TYPE_ALL) + return "all"; + for(e = MapInfo_Type_first; e; e = e.enemy) + if(t == e.weapons) + return e.mdl; + return ""; +} + +string MapInfo_Type_ToText(float t) +{ + entity e; + for(e = MapInfo_Type_first; e; e = e.enemy) + if(t == e.weapons) + return e.message; + return _("@!#%'n Tuba Throwing"); } void _MapInfo_Parse_Settemp(string pFilename, string acl, float type, string s, float recurse) @@ -1192,60 +1170,15 @@ float MapInfo_CurrentFeatures() float MapInfo_CurrentGametype() { - float prev, i; + float prev; + entity e; prev = cvar("gamecfg"); - for(i = 0; i < 2; ++i) - { - if(cvar("g_dm")) - if(prev != MAPINFO_TYPE_DEATHMATCH) - return MAPINFO_TYPE_DEATHMATCH; - if(cvar("g_domination")) - if(prev != MAPINFO_TYPE_DOMINATION) - return MAPINFO_TYPE_DOMINATION; - if(cvar("g_ctf")) - if(prev != MAPINFO_TYPE_CTF) - return MAPINFO_TYPE_CTF; - if(cvar("g_runematch")) - if(prev != MAPINFO_TYPE_RUNEMATCH) - return MAPINFO_TYPE_RUNEMATCH; - if(cvar("g_tdm")) - if(prev != MAPINFO_TYPE_TEAM_DEATHMATCH) - return MAPINFO_TYPE_TEAM_DEATHMATCH; - if(cvar("g_assault")) - if(prev != MAPINFO_TYPE_ASSAULT) - return MAPINFO_TYPE_ASSAULT; - if(cvar("g_lms")) - if(prev != MAPINFO_TYPE_LMS) - return MAPINFO_TYPE_LMS; - if(cvar("g_arena")) - if(prev != MAPINFO_TYPE_ARENA) - return MAPINFO_TYPE_ARENA; - if(cvar("g_ca")) - if(prev != MAPINFO_TYPE_CA) - return MAPINFO_TYPE_CA; - if(cvar("g_keyhunt")) - if(prev != MAPINFO_TYPE_KEYHUNT) - return MAPINFO_TYPE_KEYHUNT; - if(cvar("g_onslaught")) - if(prev != MAPINFO_TYPE_ONSLAUGHT) - return MAPINFO_TYPE_ONSLAUGHT; - if(cvar("g_race")) - if(prev != MAPINFO_TYPE_RACE) - return MAPINFO_TYPE_RACE; - if(cvar("g_nexball")) - if(prev != MAPINFO_TYPE_NEXBALL) - return MAPINFO_TYPE_NEXBALL; - if(cvar("g_cts")) - if(prev != MAPINFO_TYPE_CTS) - return MAPINFO_TYPE_CTS; - if(cvar("g_freezetag")) - if(prev != MAPINFO_TYPE_FREEZETAG) - return MAPINFO_TYPE_FREEZETAG; - if(cvar("g_keepaway")) - if(prev != MAPINFO_TYPE_KEEPAWAY) - return MAPINFO_TYPE_KEEPAWAY; - prev = -1; - } + for(e = MapInfo_Type_first; e; e = e.enemy) + if(cvar(e.netname)) + if(prev != e.weapons) + return e.weapons; + if(prev) + return prev; return MAPINFO_TYPE_DEATHMATCH; } @@ -1268,48 +1201,11 @@ float MapInfo_CheckMap(string s) // returns 0 if the map can't be played with th return r; } -string MapInfo_GetGameTypeCvar(float t) -{ - switch(t) - { - case MAPINFO_TYPE_DEATHMATCH: return "g_dm"; - case MAPINFO_TYPE_TEAM_DEATHMATCH: return "g_tdm"; - case MAPINFO_TYPE_DOMINATION: return "g_domination"; - case MAPINFO_TYPE_CTF: return "g_ctf"; - case MAPINFO_TYPE_RUNEMATCH: return "g_runematch"; - case MAPINFO_TYPE_LMS: return "g_lms"; - case MAPINFO_TYPE_ARENA: return "g_arena"; - case MAPINFO_TYPE_CA: return "g_ca"; - case MAPINFO_TYPE_KEYHUNT: return "g_kh"; - case MAPINFO_TYPE_ASSAULT: return "g_assault"; - case MAPINFO_TYPE_ONSLAUGHT: return "g_onslaught"; - case MAPINFO_TYPE_RACE: return "g_race"; - case MAPINFO_TYPE_NEXBALL: return "g_nexball"; - case MAPINFO_TYPE_FREEZETAG: return "g_freezetag"; - case MAPINFO_TYPE_CTS: return "g_cts"; - case MAPINFO_TYPE_KEEPAWAY: return "g_keepaway"; - default: return ""; - } -} - void MapInfo_SwitchGameType(float t) { - cvar_set("g_dm", (t == MAPINFO_TYPE_DEATHMATCH) ? "1" : "0"); - cvar_set("g_tdm", (t == MAPINFO_TYPE_TEAM_DEATHMATCH) ? "1" : "0"); - cvar_set("g_domination", (t == MAPINFO_TYPE_DOMINATION) ? "1" : "0"); - cvar_set("g_ctf", (t == MAPINFO_TYPE_CTF) ? "1" : "0"); - cvar_set("g_runematch", (t == MAPINFO_TYPE_RUNEMATCH) ? "1" : "0"); - cvar_set("g_lms", (t == MAPINFO_TYPE_LMS) ? "1" : "0"); - cvar_set("g_arena", (t == MAPINFO_TYPE_ARENA) ? "1" : "0"); - cvar_set("g_ca", (t == MAPINFO_TYPE_CA) ? "1" : "0"); - cvar_set("g_keyhunt", (t == MAPINFO_TYPE_KEYHUNT) ? "1" : "0"); - cvar_set("g_assault", (t == MAPINFO_TYPE_ASSAULT) ? "1" : "0"); - cvar_set("g_onslaught", (t == MAPINFO_TYPE_ONSLAUGHT) ? "1" : "0"); - cvar_set("g_race", (t == MAPINFO_TYPE_RACE) ? "1" : "0"); - cvar_set("g_nexball", (t == MAPINFO_TYPE_NEXBALL) ? "1" : "0"); - cvar_set("g_cts", (t == MAPINFO_TYPE_CTS) ? "1" : "0"); - cvar_set("g_freezetag", (t == MAPINFO_TYPE_FREEZETAG) ? "1" : "0"); - cvar_set("g_keepaway", (t == MAPINFO_TYPE_KEEPAWAY) ? "1" : "0"); + entity e; + for(e = MapInfo_Type_first; e; e = e.enemy) + cvar_set(e.netname, (t == e.weapons) ? "1" : "0"); } void MapInfo_LoadMap(string s, float reinit)