-string cache_mutatormsg;
-string cache_lastmutatormsg;
+#include "teamplay.qh"
+#include "_all.qh"
-// client counts for each team
-float c1, c2, c3, c4;
-// # of bots on those teams
-float cb1, cb2, cb3, cb4;
+#include "cl_client.qh"
+#include "race.qh"
+#include "scores.qh"
+#include "scores_rules.qh"
-//float audit_teams_time;
+#include "bot/bot.qh"
+
+#include "command/vote.qh"
+
+#include "mutators/mutators_include.qh"
+
+#include "../common/deathtypes.qh"
+#include "../common/teams.qh"
void TeamchangeFrags(entity e)
{
PlayerScore_Clear(e);
}
-void entcs_init();
-
void LogTeamchange(float player_id, float team_number, float type)
{
if(!autocvar_sv_eventlog)
{
serverflags |= SERVERFLAG_TEAMPLAY;
teamplay = 1;
+ cvar_set("teamplay", "2"); // DP needs this for sending proper getstatus replies.
}
void InitGameplayMode()
world.maxs = mi_max;
MapInfo_LoadMapSettings(mapname);
- teamplay = 0;
serverflags &= ~SERVERFLAG_TEAMPLAY;
+ teamplay = 0;
+ cvar_set("teamplay", "0"); // DP needs this for sending proper getstatus replies.
if (!cvar_value_issafe(world.fog))
{
- print("The current map contains a potentially harmful fog setting, ignored\n");
+ LOG_INFO("The current map contains a potentially harmful fog setting, ignored\n");
world.fog = string_null;
}
if(MapInfo_Map_fog != "")
if(g_onslaught)
{
ActivateTeamplay();
+ fraglimit_override = autocvar_g_onslaught_point_limit;
have_team_spawns = -1; // request team spawns
MUTATOR_ADD(gamemode_onslaught);
}
{
string s, modifications, motd;
- ret_string = "";
- MUTATOR_CALLHOOK(BuildMutatorsPrettyString);
+ MUTATOR_CALLHOOK(BuildMutatorsPrettyString, "");
modifications = ret_string;
if(g_weaponarena)
// cover anything else by treating it like tdm with no teams spawned
dm = 2;
- ret_float = dm;
- MUTATOR_CALLHOOK(GetTeamCount);
+ MUTATOR_CALLHOOK(GetTeamCount, dm);
dm = ret_float;
if(dm >= 4)
// invalid
if(ca < 0 || cb < 0)
- return FALSE;
+ return false;
// equal
if(ta == tb)
- return TRUE;
+ return true;
if(IS_REAL_CLIENT(e))
{
// keep teams alive (teams of size 0 always count as smaller, ignoring score)
if(ca < 1)
if(cb >= 1)
- return TRUE;
+ return true;
if(ca >= 1)
if(cb < 1)
- return FALSE;
+ return false;
// first, normalize
f = max(ca, cb, 1);
// otherwise end up on the smallest team (handled below)
}
- smallest = FindSmallestTeam(pl, TRUE);
+ smallest = FindSmallestTeam(pl, true);
if(!only_return_best && !pl.bot_forced_team)
{
if(scolor == dcolor)
{
//bprint("same team change\n");
- SetPlayerTeam(self, dteam, steam, TRUE);
+ SetPlayerTeam(self, dteam, steam, true);
return;
}
TeamchangeFrags(self);
}
- SetPlayerTeam(self, dteam, steam, FALSE);
+ // since this is an engine function, and gamecode doesn't have any calls earlier than this, do the connecting message here
+ if(!IS_CLIENT(self))
+ Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_CONNECTING, self.netname);
+
+ SetPlayerTeam(self, dteam, steam, !IS_CLIENT(self));
if(IS_PLAYER(self) && steam != dteam)
{
// move the player to the new team
TeamchangeFrags(selected);
- SetPlayerTeam(selected, smallestteam, source_team, FALSE);
+ SetPlayerTeam(selected, smallestteam, source_team, false);
if(selected.deadflag == DEAD_NO)
Damage(selected, selected, selected, 100000, DEATH_AUTOTEAMCHANGE, selected.origin, '0 0 0');