]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/gamemodes/gamemode/clanarena/clanarena.qh
ef475bc8602c8977d5d54831ace3f3ae8bc761bf
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / gamemodes / gamemode / clanarena / clanarena.qh
1 #pragma once
2
3 #ifdef SVQC
4 #include <common/mutators/base.qh>
5 #include <server/round_handler.qh>
6
7 int autocvar_g_ca_point_limit;
8 int autocvar_g_ca_point_leadlimit;
9 float autocvar_g_ca_round_timelimit;
10 bool autocvar_g_ca_team_spawns;
11 //int autocvar_g_ca_teams;
12 int autocvar_g_ca_teams_override;
13 float autocvar_g_ca_warmup;
14
15
16 int ca_teams;
17 bool allowed_to_spawn;
18
19 const int ST_CA_ROUNDS = 1;
20
21 bool CA_CheckTeams();
22 bool CA_CheckWinner();
23 void CA_RoundStart();
24 bool ca_isEliminated(entity e);
25
26 REGISTER_MUTATOR(ca, false)
27 {
28     MUTATOR_STATIC();
29         MUTATOR_ONADD
30         {
31                 GameRules_teams(true);
32         GameRules_spawning_teams(autocvar_g_ca_team_spawns);
33         GameRules_limit_score(autocvar_g_ca_point_limit);
34         GameRules_limit_lead(autocvar_g_ca_point_leadlimit);
35
36                 ca_teams = autocvar_g_ca_teams_override;
37                 if (ca_teams < 2)
38                         ca_teams = cvar("g_ca_teams"); // read the cvar directly as it gets written earlier in the same frame
39
40                 ca_teams = BITS(bound(2, ca_teams, 4));
41         GameRules_scoring(ca_teams, SFL_SORT_PRIO_PRIMARY, 0, {
42             field_team(ST_CA_ROUNDS, "rounds", SFL_SORT_PRIO_PRIMARY);
43         });
44
45                 allowed_to_spawn = true;
46                 round_handler_Spawn(CA_CheckTeams, CA_CheckWinner, CA_RoundStart);
47                 round_handler_Init(5, autocvar_g_ca_warmup, autocvar_g_ca_round_timelimit);
48                 EliminatedPlayers_Init(ca_isEliminated);
49         }
50         return 0;
51 }
52
53 // should be removed in the future, as other code should not have to care
54 .float caplayer; // 0.5 if scheduled to join the next round
55 #endif