]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/gamemodes/sv_rules.qc
Merge branch 'terencehill/cl_forceplayercolors_3' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / gamemodes / sv_rules.qc
1 #include "sv_rules.qh"
2
3 #include <server/spawnpoints.qh>
4 #include <server/teamplay.qh>
5
6 void GameRules_teams(bool value)
7 {
8     if (value) {
9         serverflags |= SERVERFLAG_TEAMPLAY;
10         teamplay = 1;
11         cvar_set("teamplay", "2");  // DP needs this for sending proper getstatus replies.
12         GameRules_spawning_teams(true);
13     } else {
14         serverflags &= ~SERVERFLAG_TEAMPLAY;
15         teamplay = 0;
16         cvar_set("teamplay", "0");  // DP needs this for sending proper getstatus replies.
17         GameRules_spawning_teams(false);
18     }
19 }
20
21 void GameRules_spawning_teams(bool value)
22 {
23     have_team_spawns = value ? -1 : 0;
24 }
25
26 bool _GameRules_score_enabled = true;
27 void GameRules_score_enabled(bool value)
28 {
29     _GameRules_score_enabled = value;
30 }
31
32 bool GameRules_limit_score_initialized;
33 void GameRules_limit_score(int limit)
34 {
35     if (GameRules_limit_score_initialized) return;
36     if (autocvar_g_campaign) return;
37     if (limit < 0) return;
38     cvar_set("fraglimit", ftos(limit));
39     GameRules_limit_score_initialized = true;
40 }
41
42 bool GameRules_limit_lead_initialized;
43 void GameRules_limit_lead(int limit)
44 {
45     if (GameRules_limit_lead_initialized) return;
46     if (autocvar_g_campaign) return;
47     if (limit < 0) return;
48     cvar_set("leadlimit", ftos(limit));
49     GameRules_limit_lead_initialized = true;
50 }
51
52 bool GameRules_limit_time_initialized;
53 void GameRules_limit_time(int limit)
54 {
55     if (GameRules_limit_time_initialized) return;
56     if (autocvar_g_campaign) return;
57     if (limit < 0) return;
58     cvar_set("timelimit", ftos(limit));
59     GameRules_limit_time_initialized = true;
60 }
61
62 bool GameRules_limit_time_qualifying_initialized;
63 void GameRules_limit_time_qualifying(int limit)
64 {
65     if (GameRules_limit_time_qualifying_initialized) return;
66     if (autocvar_g_campaign) return;
67     if (limit < 0) return;
68     cvar_set("g_race_qualifying_timelimit", ftos(limit));
69     GameRules_limit_time_qualifying_initialized = true;
70 }
71
72 void GameRules_limit_fallbacks()
73 {
74     GameRules_limit_score(autocvar_fraglimit_override);
75     GameRules_limit_lead(autocvar_leadlimit_override);
76     GameRules_limit_time(autocvar_timelimit_override);
77 }
78
79 void _GameRules_scoring_begin(int teams, float spprio, float stprio)
80 {
81     ScoreRules_basics(teams, spprio, stprio, _GameRules_score_enabled);
82 }
83 void _GameRules_scoring_field(entity i, string label, int scoreflags)
84 {
85     ScoreInfo_SetLabel_PlayerScore(i, label, scoreflags);
86 }
87 void _GameRules_scoring_field_team(float i, string label, int scoreflags)
88 {
89     ScoreInfo_SetLabel_TeamScore(i, label, scoreflags);
90 }
91 void _GameRules_scoring_end()
92 {
93     ScoreRules_basics_end();
94 }
95
96 .bool m_GameRules_scoring_vip;
97 void GameRules_scoring_vip(entity player, bool value)
98 {
99     player.m_GameRules_scoring_vip = value;
100 }
101 bool GameRules_scoring_is_vip(entity player)
102 {
103     return player.m_GameRules_scoring_vip;
104 }
105
106 float _GameRules_scoring_add(entity client, entity sp, float value)
107 {
108     return PlayerScore_Add(client, sp, value);
109 }
110 float _GameRules_scoring_add_team(entity client, entity sp, int st, float value)
111 {
112     return PlayerTeamScore_Add(client, sp, st, value);
113 }