Merge branch 'master' into martin-t/globals
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / impulses / all.qh
1 #pragma once
2
3 REGISTRY(IMPULSES, 255)
4 REGISTER_REGISTRY(IMPULSES)
5 REGISTRY_SORT(IMPULSES)
6 STATIC_INIT(IMPULSES_renumber)
7 {
8         FOREACH(IMPULSES, true, it.m_id = i);
9 }
10 REGISTRY_CHECK(IMPULSES)
11
12 .void(entity this) impulse_handle;
13
14 #if defined(CSQC)
15 #define IMPULSE_ALIAS(alias, id) localcmd("\nalias " #alias " \"", id ,"\"\n")
16 #else
17 #define IMPULSE_ALIAS(alias, id)
18 #endif
19
20 #define REGISTER_IMPULSE(id, n) _REGISTER_IMPULSE(IMP_##id, id, n)
21 #define _REGISTER_IMPULSE(id, alias, n) \
22         REGISTER(IMPULSES, id, m_id, new_pure(Impulse)) \
23         { \
24                 this.impulse = n; \
25                 IMPULSE_ALIAS(alias, "impulse " #n); \
26         }
27
28 #define LEGACY_IMPULSE_ID(alias, id) LEGACY_IMPULSE(alias, id, sprintf("impulse %d", IMP_##alias.impulse))
29
30 void _impCheck(string s, string alias)
31 {
32         // this is inside a function to avoid expanding it on compilation everytime
33         if (s == alias)
34                 LOG_FATALF("LEGACY_IMPULSE: would define a recursive alias for '%s', use LEGACY_IMPULSE_ID instead", s);
35 }
36
37 #define LEGACY_IMPULSE(alias, id, new) \
38         STATIC_INIT(legacy_##alias) { \
39                 string s = new; \
40                 _impCheck(s, #alias); \
41                 IMPULSE_ALIAS(alias, s); \
42         } \
43         SHUTDOWN(legacy_##alias) { IMPULSE_ALIAS(alias, "impulse " #id); }
44
45 #define X(slot, imp) \
46         REGISTER_IMPULSE(weapon_group_##slot, imp) \
47         LEGACY_IMPULSE(weapon_group_##slot, imp, "impulse " #imp)
48 X(1, 1)
49 X(2, 2)
50 X(3, 3)
51 X(4, 4)
52 X(5, 5)
53 X(6, 6)
54 X(7, 7)
55 X(8, 8)
56 X(9, 9)
57 X(0, 14)
58 #undef X
59
60 #define X(slot, dir, imp) \
61         REGISTER_IMPULSE(weapon_priority_##slot##_##dir, imp) \
62         LEGACY_IMPULSE(weapon_priority_##slot##_##dir, imp, "impulse " #imp)
63 X(0, prev, 200)
64 X(1, prev, 201)
65 X(2, prev, 202)
66 X(3, prev, 203)
67 X(4, prev, 204)
68 X(5, prev, 205)
69 X(6, prev, 206)
70 X(7, prev, 207)
71 X(8, prev, 208)
72 X(9, prev, 209)
73
74 X(0, best, 210)
75 X(1, best, 211)
76 X(2, best, 212)
77 X(3, best, 213)
78 X(4, best, 214)
79 X(5, best, 215)
80 X(6, best, 216)
81 X(7, best, 217)
82 X(8, best, 218)
83 X(9, best, 219)
84
85 X(0, next, 220)
86 X(1, next, 221)
87 X(2, next, 222)
88 X(3, next, 223)
89 X(4, next, 224)
90 X(5, next, 225)
91 X(6, next, 226)
92 X(7, next, 227)
93 X(8, next, 228)
94 X(9, next, 229)
95 #undef X
96
97 // direct weapons
98
99 #define X(i, imp) \
100         REGISTER_IMPULSE(weapon_byid_##i, imp)
101 X(0, 230)
102 X(1, 231)
103 X(2, 232)
104 X(3, 233)
105 X(4, 234)
106 X(5, 235)
107 X(6, 236)
108 X(7, 237)
109 X(8, 238)
110 X(9, 239)
111 X(10, 240)
112 X(11, 241)
113 X(12, 242)
114 X(13, 243)
115 X(14, 244)
116 X(15, 245)
117 X(16, 246)
118 X(17, 247)
119 X(18, 248)
120 X(19, 249)
121 X(20, 250)
122 X(21, 251)
123 X(22, 252)
124 X(23, 253)
125 #undef X
126
127 REGISTER_IMPULSE(weapon_next_byid, 10)
128 LEGACY_IMPULSE(_weapnext_2, 10, "weapon_next_byid")
129
130 REGISTER_IMPULSE(weapon_prev_byid, 12)
131 LEGACY_IMPULSE(_weapprev_2, 12, "weapon_prev_byid")
132
133 REGISTER_IMPULSE(weapon_next_bygroup, 18)
134 LEGACY_IMPULSE(_weapnext_0, 18, "weapon_next_bygroup")
135
136 REGISTER_IMPULSE(weapon_prev_bygroup, 19)
137 LEGACY_IMPULSE(_weapprev_0, 19, "weapon_prev_bygroup")
138
139 REGISTER_IMPULSE(weapon_next_bypriority, 15)
140 LEGACY_IMPULSE(_weapnext_1, 15, "weapon_next_bypriority")
141
142 REGISTER_IMPULSE(weapon_prev_bypriority, 16)
143 LEGACY_IMPULSE(_weapprev_1, 16, "weapon_prev_bypriority")
144
145 REGISTER_IMPULSE(weapon_last, 11)
146 LEGACY_IMPULSE(weaplast, 11, "weapon_last")
147
148 REGISTER_IMPULSE(weapon_best, 13)
149 LEGACY_IMPULSE(weapbest, 13, "weapon_best")
150
151 REGISTER_IMPULSE(weapon_drop, 17)
152 LEGACY_IMPULSE(dropweapon, 17, "weapon_drop")
153
154 REGISTER_IMPULSE(weapon_reload, 20)
155 LEGACY_IMPULSE(reload, 20, "weapon_reload")
156
157 REGISTER_IMPULSE(use, 21)
158 LEGACY_IMPULSE_ID(use, 21)
159
160 REGISTER_IMPULSE(waypoint_personal_here, 30)
161 LEGACY_IMPULSE(g_waypointsprite_personal, 30, "waypoint_personal_here")
162
163 REGISTER_IMPULSE(waypoint_personal_crosshair, 31)
164 LEGACY_IMPULSE(g_waypointsprite_personal_p, 31, "waypoint_personal_crosshair")
165
166 REGISTER_IMPULSE(waypoint_personal_death, 32)
167 LEGACY_IMPULSE(g_waypointsprite_personal_d, 32, "waypoint_personal_death")
168
169 REGISTER_IMPULSE(waypoint_here_follow, 33)
170 LEGACY_IMPULSE(g_waypointsprite_team_helpme, 33, "waypoint_here_follow")
171
172 REGISTER_IMPULSE(waypoint_here_here, 34)
173 LEGACY_IMPULSE(g_waypointsprite_team_here, 34, "waypoint_here_here")
174
175 REGISTER_IMPULSE(waypoint_here_crosshair, 35)
176 LEGACY_IMPULSE(g_waypointsprite_team_here_p, 35, "waypoint_here_crosshair")
177
178 REGISTER_IMPULSE(waypoint_here_death, 36)
179 LEGACY_IMPULSE(g_waypointsprite_team_here_d, 36, "waypoint_here_death")
180
181 REGISTER_IMPULSE(waypoint_danger_here, 37)
182 LEGACY_IMPULSE(g_waypointsprite_team_danger, 37, "waypoint_danger_here")
183
184 REGISTER_IMPULSE(waypoint_danger_crosshair, 38)
185 LEGACY_IMPULSE(g_waypointsprite_team_danger_p, 38, "waypoint_danger_crosshair")
186
187 REGISTER_IMPULSE(waypoint_danger_death, 39)
188 LEGACY_IMPULSE(g_waypointsprite_team_danger_d, 39, "waypoint_danger_death")
189
190 REGISTER_IMPULSE(waypoint_clear_personal, 47)
191 LEGACY_IMPULSE(g_waypointsprite_clear_personal, 47, "waypoint_clear_personal")
192
193 REGISTER_IMPULSE(waypoint_clear, 48)
194 LEGACY_IMPULSE(g_waypointsprite_clear, 48, "waypoint_clear")
195
196
197 #define CHIMPULSE(id, n) _CHIMPULSE(CHIMPULSE_##id, n)
198 #define _CHIMPULSE(id, n) \
199         REGISTER(IMPULSES, id, m_id, new_pure(Impulse)) \
200         { \
201                 this.impulse = n; \
202         }
203
204 CHIMPULSE(SPEEDRUN_INIT, 30)
205 CHIMPULSE(GIVE_ALL, 99)
206 CHIMPULSE(CLONE_MOVING, 140)
207 CHIMPULSE(SPEEDRUN, 141)
208 CHIMPULSE(CLONE_STANDING, 142)
209 CHIMPULSE(TELEPORT, 143)
210 CHIMPULSE(R00T, 148)