X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fteamplay.qc;h=5f2f278e71b355ba93dce46f44d59e9dfec7c6c7;hp=5185b2c611a639093d1f343911182e98d8009cf3;hb=b0c72809acbe742d2fa226c01b65baf347c8457c;hpb=04ab0ff7c3c5fcfe9780eadccfd5abd03d25b181 diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 5185b2c611..5f2f278e71 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -94,6 +94,10 @@ void InitGameplayMode() fraglimit_override = autocvar_g_domination_point_limit; leadlimit_override = autocvar_g_domination_point_leadlimit; MUTATOR_ADD(gamemode_domination); + + if(autocvar_g_domination_roundbased && autocvar_g_domination_roundbased_point_limit) + fraglimit_override = autocvar_g_domination_roundbased_point_limit; + have_team_spawns = -1; // request team spawns } @@ -121,6 +125,8 @@ void InitGameplayMode() fraglimit_override = autocvar_g_ca_point_limit; leadlimit_override = autocvar_g_ca_point_leadlimit; MUTATOR_ADD(gamemode_ca); + if(autocvar_g_ca_team_spawns) + have_team_spawns = -1; // request team spawns } if(g_keyhunt) @@ -137,6 +143,8 @@ void InitGameplayMode() fraglimit_override = autocvar_g_freezetag_point_limit; leadlimit_override = autocvar_g_freezetag_point_leadlimit; MUTATOR_ADD(gamemode_freezetag); + if(autocvar_g_freezetag_team_spawns) + have_team_spawns = -1; // request team spawns } if(g_assault) @@ -155,7 +163,6 @@ void InitGameplayMode() if(g_race) { - if(autocvar_g_race_teams) { ActivateTeamplay(); @@ -168,6 +175,8 @@ void InitGameplayMode() qualifying_override = autocvar_g_race_qualifying_timelimit_override; fraglimit_override = autocvar_g_race_laps_limit; leadlimit_override = 0; // currently not supported by race + + MUTATOR_ADD(gamemode_race); } if(g_cts) @@ -175,6 +184,7 @@ void InitGameplayMode() g_race_qualifying = 1; fraglimit_override = 0; leadlimit_override = 0; + MUTATOR_ADD(gamemode_cts); } if(g_nexball) @@ -191,6 +201,18 @@ void InitGameplayMode() MUTATOR_ADD(gamemode_keepaway); } + if(g_invasion) + { + fraglimit_override = autocvar_g_invasion_point_limit; + if(autocvar_g_invasion_teams >= 2) + { + ActivateTeamplay(); + if(autocvar_g_invasion_team_spawns) + have_team_spawns = -1; // request team spawns + } + MUTATOR_ADD(gamemode_invasion); + } + if(teamplay) entcs_init(); @@ -232,12 +254,8 @@ void InitGameplayMode() } if(g_race || g_cts) - { - if(g_race_qualifying) - independent_players = 1; - - ScoreRules_race(); - } + if(g_race_qualifying) + independent_players = 1; InitializeEntity(world, default_delayedinit, INITPRIO_GAMETYPE_FALLBACK); } @@ -273,7 +291,7 @@ string getwelcomemessage(void) } if(autocvar_g_start_weapon_laser == 0) modifications = strcat(modifications, ", No start weapons"); - if(autocvar_sv_gravity < 800) + if(cvar("sv_gravity") < stof(cvar_defstring("sv_gravity"))) modifications = strcat(modifications, ", Low gravity"); if(g_cloaked && !g_cts) modifications = strcat(modifications, ", Cloaked"); @@ -301,6 +319,9 @@ string getwelcomemessage(void) if (g_grappling_hook) s = strcat(s, "\n\n^3grappling hook^8 is enabled, press 'e' to use it\n"); + if (cvar("g_nades")) + s = strcat(s, "\n\n^3nades^8 are enabled, press 'g' to use them\n"); + if(cache_lastmutatormsg != autocvar_g_mutatormsg) { if(cache_lastmutatormsg) @@ -404,10 +425,7 @@ void CheckAllowedTeams (entity for_whom) else { // cover anything else by treating it like tdm with no teams spawned - if(g_race) - dm = race_teams; - else - dm = 2; + dm = 2; ret_float = dm; MUTATOR_CALLHOOK(GetTeamCount); @@ -645,16 +663,8 @@ float FindSmallestTeam(entity pl, float ignore_pl) { if(autocvar_g_campaign && pl && IS_REAL_CLIENT(pl)) return 1; // special case for campaign and player joining - else if(g_domination) - error("Too few teams available for domination\n"); - else if(g_ctf) - error("Too few teams available for ctf\n"); - else if(g_keyhunt) - error("Too few teams available for key hunt\n"); - else if(g_freezetag) - error("Too few teams available for freeze tag\n"); else - error("Too few teams available for team deathmatch\n"); + error(sprintf("Too few teams available for %s\n", MapInfo_Type_ToString(MapInfo_CurrentGametype()))); } // count how many players are in each team @@ -809,7 +819,7 @@ void SV_ChangeTeam(float _color) } if((autocvar_g_campaign) || (autocvar_g_changeteam_banned && self.wasplayer)) { - sprint(self, "Team changes not allowed\n"); + Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TEAMCHANGE_NOTALLOWED); return; // changing teams is not allowed } @@ -819,7 +829,7 @@ void SV_ChangeTeam(float _color) GetTeamCounts(self); if(!TeamSmallerEqThanTeam(dteam, steam, self)) { - sprint(self, "Cannot change to a larger/better/shinier team\n"); + Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_TEAMCHANGE_LARGERTEAM); return; } } @@ -980,7 +990,7 @@ void ShufflePlayerOutOfTeam (float source_team) if(selected.deadflag == DEAD_NO) Damage(selected, selected, selected, 100000, DEATH_AUTOTEAMCHANGE, selected.origin, '0 0 0'); - centerprint(selected, strcat("You have been moved into a different team to improve team balance\nYou are now on: ", Team_ColoredFullName(selected.team))); + Send_Notification(NOTIF_ONE, selected, MSG_CENTER, CENTER_DEATH_SELF_AUTOTEAMCHANGE, selected.team); } // code from here on is just to support maps that don't have team entities