X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fg_world.qc;h=849162d1108c7c0335da64b489b6fe73b93ed2e7;hb=a3a388a32d0ea11fe79341ef44edc21c5ba460f4;hp=038936ee49282bff375700dd76159197aea86d8f;hpb=69eda62d02bc02ff50547bad514af3f7ce487413;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 038936ee4..849162d11 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -265,6 +265,7 @@ void cvar_changes_init() BADCVAR("g_dm"); BADCVAR("g_domination"); BADCVAR("g_domination_default_teams"); + BADCVAR("g_duel"); BADCVAR("g_freezetag"); BADCVAR("g_freezetag_teams"); BADCVAR("g_invasion_teams"); @@ -614,10 +615,12 @@ void InitGameplayMode() world.fog = string_null; } if(MapInfo_Map_fog != "") + { if(MapInfo_Map_fog == "none") world.fog = string_null; else world.fog = strzone(MapInfo_Map_fog); + } clientstuff = strzone(MapInfo_Map_clientstuff); MapInfo_ClearTemps(); @@ -921,7 +924,7 @@ spawnfunc(worldspawn) s = cons(s, pkg); } // add automatically managed files to the list - #define X(match) MACRO_BEGIN { \ + #define X(match) MACRO_BEGIN \ int fd = search_begin(match, true, false); \ if (fd >= 0) \ { \ @@ -931,7 +934,7 @@ spawnfunc(worldspawn) } \ search_end(fd); \ } \ - } MACRO_END + MACRO_END X("*-serverpackage.txt"); X("*.serverpackage"); #undef X @@ -1520,7 +1523,7 @@ void FixIntermissionClient(entity e) if(!e.autoscreenshot) // initial call { e.autoscreenshot = time + 0.8; // used for autoscreenshot - SetResourceAmountExplicit(e, RESOURCE_HEALTH, -2342); + SetResourceExplicit(e, RES_HEALTH, -2342); // first intermission phase; voting phase has positive health (used to decide whether to send SVC_FINALE or not) for (int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) { @@ -1611,7 +1614,9 @@ float InitiateSuddenDeath() // - for this timelimit_overtime needs to be >0 of course // - also check the winning condition calculated in the previous frame and only add normal overtime // again, if at the point at which timelimit would be extended again, still no winner was found - if (!autocvar_g_campaign && (checkrules_overtimesadded >= 0) && (checkrules_overtimesadded < autocvar_timelimit_overtimes || autocvar_timelimit_overtimes < 0) && autocvar_timelimit_overtime && !(g_race && !g_race_qualifying)) + if (!autocvar_g_campaign && checkrules_overtimesadded >= 0 + && (checkrules_overtimesadded < autocvar_timelimit_overtimes || autocvar_timelimit_overtimes < 0) + && autocvar_timelimit_overtime && !(g_race && !g_race_qualifying)) { return 1; // need to call InitiateOvertime later } @@ -1634,33 +1639,36 @@ void InitiateOvertime() // ONLY call this if InitiateSuddenDeath returned true { ++checkrules_overtimesadded; //add one more overtime by simply extending the timelimit - float tl; - tl = autocvar_timelimit; - tl += autocvar_timelimit_overtime; - cvar_set("timelimit", ftos(tl)); - + cvar_set("timelimit", ftos(autocvar_timelimit + autocvar_timelimit_overtime)); Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_OVERTIME_TIME, autocvar_timelimit_overtime * 60); } float GetWinningCode(float fraglimitreached, float equality) { if(autocvar_g_campaign == 1) + { if(fraglimitreached) return WINNING_YES; else return WINNING_NO; - + } else + { if(equality) + { if(fraglimitreached) return WINNING_STARTSUDDENDEATHOVERTIME; else return WINNING_NEVER; + } else + { if(fraglimitreached) return WINNING_YES; else return WINNING_NO; + } + } } // set the .winning flag for exactly those players with a given field value @@ -1730,19 +1738,20 @@ float WinningCondition_Scores(float limit, float leadlimit) leaderfrags = WinningConditionHelper_topscore; if (limit) - if (leaderfrags == limit - 1) - Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_1); - else if (leaderfrags == limit - 2) - Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_2); - else if (leaderfrags == limit - 3) - Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_3); + { + if (leaderfrags == limit - 1) + Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_1); + else if (leaderfrags == limit - 2) + Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_2); + else if (leaderfrags == limit - 3) + Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_REMAINING_FRAG_3); + } } } limitreached = false; - if(limit) - if(WinningConditionHelper_topscore >= limit) - limitreached = true; + if (limit && WinningConditionHelper_topscore >= limit) + limitreached = true; if(leadlimit) { float leadlimitreached; @@ -1777,7 +1786,7 @@ float WinningCondition_RanOutOfSpawns() { Team_SetTeamScore(Team_GetTeamFromIndex(i), 0); } - + FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it), { if (Team_IsValidTeam(it.team))