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