]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/gamemodes/gamemode/onslaught/sv_onslaught.qh
Kill a few FOREACH_ENTITY_CLASS cases
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / gamemodes / gamemode / onslaught / sv_onslaught.qh
1 #pragma once
2
3 float autocvar_g_onslaught_point_limit;
4 void ons_Initialize();
5
6 REGISTER_MUTATOR(ons, false)
7 {
8         MUTATOR_ONADD
9         {
10                 if (time > 1) // game loads at time 1
11                         error("This is a game type and it cannot be added at runtime.");
12                 ons_Initialize();
13
14                 ActivateTeamplay();
15                 SetLimits(autocvar_g_onslaught_point_limit, autocvar_leadlimit_override, autocvar_timelimit_override, -1);
16                 have_team_spawns = -1; // request team spawns
17         }
18
19         MUTATOR_ONROLLBACK_OR_REMOVE
20         {
21                 // we actually cannot roll back ons_Initialize here
22                 // BUT: we don't need to! If this gets called, adding always
23                 // succeeds.
24         }
25
26         MUTATOR_ONREMOVE
27         {
28                 LOG_INFO("This is a game type and it cannot be removed at runtime.");
29                 return -1;
30         }
31
32         return false;
33 }
34
35 .entity ons_toucher; // player who touched the control point
36
37 // control point / generator constants
38 const float ONS_CP_THINKRATE = 0.2;
39 const float GEN_THINKRATE = 1;
40 #define CPGEN_SPAWN_OFFSET ('0 0 1' * (PL_MAX_CONST.z - 13))
41 const vector CPGEN_WAYPOINT_OFFSET = ('0 0 128');
42 const vector CPICON_OFFSET = ('0 0 96');
43
44 // list of generators on the map
45 entity ons_worldgeneratorlist;
46 .entity ons_worldgeneratornext;
47
48 // list of control points on the map
49 entity ons_worldcplist;
50 .entity ons_worldcpnext;
51 .entity ons_stalecpnext;
52
53 // list of links on the map
54 entity ons_worldlinklist;
55 .entity ons_worldlinknext;
56 .entity ons_stalelinknext;
57
58 // definitions
59 .entity sprite;
60 .string target2;
61 .int iscaptured;
62 .int islinked;
63 .int isshielded;
64 .float lasthealth;
65 .int lastteam;
66 .int lastshielded;
67 .int lastcaptured;
68
69 .bool waslinked;
70
71 bool ons_stalemate;
72
73 .float teleport_antispam;
74
75 // waypoint sprites
76 .entity bot_basewaypoint; // generator waypointsprite
77
78 .bool isgenneighbor[17];
79 .bool iscpneighbor[17];
80 float ons_notification_time[17];
81
82 .float ons_overtime_damagedelay;
83
84 .vector ons_deathloc;
85
86 .entity ons_spawn_by;
87
88 // declarations for functions used outside gamemode_onslaught.qc
89 void ons_Generator_UpdateSprite(entity e);
90 void ons_ControlPoint_UpdateSprite(entity e);
91 bool ons_ControlPoint_Attackable(entity cp, int teamnumber);
92
93 // CaptureShield: Prevent capturing or destroying control point/generator if it is not available yet
94 float ons_captureshield_force; // push force of the shield
95
96 // bot player logic
97 const int HAVOCBOT_ONS_ROLE_NONE                = 0;
98 const int HAVOCBOT_ONS_ROLE_DEFENSE     = 2;
99 const int HAVOCBOT_ONS_ROLE_ASSISTANT   = 4;
100 const int HAVOCBOT_ONS_ROLE_OFFENSE     = 8;
101
102 .entity havocbot_ons_target;
103
104 .int havocbot_role_flags;
105 .float havocbot_attack_time;
106
107 void havocbot_role_ons_defense(entity this);
108 void havocbot_role_ons_offense(entity this);
109 void havocbot_role_ons_assistant(entity this);
110
111 void havocbot_ons_reset_role(entity this);
112 void havocbot_goalrating_items(entity this, float ratingscale, vector org, float sradius);
113 void havocbot_goalrating_enemyplayers(entity this, float ratingscale, vector org, float sradius);
114
115 // score rule declarations
116 const int ST_ONS_CAPS = 1;