]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/server/mutators/mutator/gamemode_invasion.qh
e902b5ee60e5b9465449f77c3a193836e4a7cd0f
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / mutator / gamemode_invasion.qh
1 #pragma once
2
3 #include "../gamemode.qh"
4
5 #define autocvar_g_invasion_point_limit cvar("g_invasion_point_limit")
6 int autocvar_g_invasion_teams;
7 int autocvar_g_invasion_type;
8 bool autocvar_g_invasion_team_spawns;
9 bool g_invasion;
10 void invasion_Initialize();
11
12 REGISTER_MUTATOR(inv, false)
13 {
14     MUTATOR_STATIC();
15         MUTATOR_ONADD
16         {
17                 g_invasion = true;
18                 invasion_Initialize();
19
20                 cvar_settemp("g_monsters", "1");
21
22         GameRules_limit_score(autocvar_g_invasion_point_limit);
23
24                 if (autocvar_g_invasion_teams >= 2)
25                 {
26                         GameRules_teams(true);
27                         GameRules_spawning_teams(autocvar_g_invasion_team_spawns);
28                 }
29         }
30         return 0;
31 }
32
33 float inv_numspawned;
34 float inv_maxspawned;
35 float inv_roundcnt;
36 float inv_maxrounds;
37 float inv_numkilled;
38 float inv_lastcheck;
39 float inv_maxcurrent;
40
41 float invasion_teams;
42 float inv_monsters_perteam[17];
43
44 float inv_monsterskill;
45
46 const float ST_INV_KILLS = 1;
47
48 const int INV_TYPE_ROUND = 0; // round-based waves of enemies
49 const int INV_TYPE_HUNT = 1; // clear the map of placed enemies
50 const int INV_TYPE_STAGE = 2; // reach the end of the level