updated readme
[divverent/nexuiz.git] / navnodeedit / src / defs.qc
1 // These lines CANNOT be altered/moved\r
2 entity          self;\r
3 entity          other;\r
4 entity          world;\r
5 float           time;\r
6 float           frametime;\r
7 float           force_retouch;          // force all entities to touch triggers\r
8 string          mapname;\r
9 float           deathmatch;\r
10 float           coop;\r
11 float           teamplay;\r
12 float           serverflags;            // propagated from level to level, used to\r
13 float           total_secrets;\r
14 float           total_monsters;\r
15 float           found_secrets;          // number of secrets found\r
16 float           killed_monsters;        // number of monsters killed\r
17 float           parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9, parm10, parm11, parm12, parm13, parm14, parm15, parm16;\r
18 vector          v_forward, v_up, v_right;       // set by makevectors()\r
19 float           trace_allsolid;\r
20 float           trace_startsolid;\r
21 float           trace_fraction;\r
22 vector          trace_endpos;\r
23 vector          trace_plane_normal;\r
24 float           trace_plane_dist;\r
25 entity          trace_ent;\r
26 float           trace_inopen;\r
27 float           trace_inwater;\r
28 \r
29 entity          msg_entity;                      // destination of single entity writes\r
30 void()          main;                            // only for testing\r
31 void()          StartFrame;\r
32 void()          PlayerPreThink;\r
33 void()          PlayerPostThink;\r
34 void()          ClientKill;\r
35 void()          ClientConnect;\r
36 void()          PutClientInServer;              // call after setting the parm1... parms\r
37 void()          ClientDisconnect;\r
38 void()          SetNewParms;                    // called when a client first connects to\r
39 void()          SetChangeParms;                 // call to set parms for self so they can\r
40 void            end_sys_globals;                // flag for structure dumping\r
41 \r
42 .float          modelindex;             // *** model index in the precached list\r
43 .vector         absmin, absmax; // *** origin + mins / maxs\r
44 .float          ltime;                  // local time for entity\r
45 .float          movetype;\r
46 .float          solid;\r
47 .vector         origin;                 // ***\r
48 .vector         oldorigin;              // ***\r
49 .vector         velocity;\r
50 .vector         angles;\r
51 .vector         avelocity;\r
52 .vector         punchangle;             // temp angle adjust from damage or recoil\r
53 .string         classname;              // spawn function\r
54 .string         model;\r
55 .float          frame;\r
56 .float          skin;\r
57 .float          effects;\r
58 .vector         mins, maxs;             // bounding box extents reletive to origin\r
59 .vector         size;                   // maxs - mins\r
60 .void()         touch;\r
61 .void()         use;\r
62 .void()         think;\r
63 .void()         blocked;                // for doors or plats, called when can't push other\r
64 .float          nextthink;\r
65 .entity         groundentity;\r
66 .float          health;\r
67 .float          frags;\r
68 .float          weapon;                 // one of the IT_SHOTGUN, etc flags\r
69 .string         weaponmodel;\r
70 .float          weaponframe;\r
71 .float          currentammo;\r
72 .float          ammo_shells, ammo_nails, ammo_rockets, ammo_cells;\r
73 .float          items;                  // bit flags\r
74 .float          takedamage;\r
75 .entity         chain;\r
76 .float          deadflag;\r
77 .vector         view_ofs;                       // add to origin to get eye point\r
78 .float          button0;                // fire\r
79 .float          button1;                // use\r
80 .float          button2;                // jump\r
81 .float          impulse;                // weapon changes\r
82 .float          fixangle;\r
83 .vector         v_angle;                // view / targeting angle for players\r
84 .float          idealpitch;             // calculated pitch angle for lookup up slopes\r
85 .string         netname;\r
86 .entity         enemy;\r
87 .float          flags;\r
88 .float          colormap;\r
89 .float          team;\r
90 .float          max_health;             // players maximum health is stored here\r
91 .float          teleport_time;  // don't back up\r
92 .float          armortype;              // save this fraction of incoming damage\r
93 .float          armorvalue;\r
94 .float          waterlevel;             // 0 = not in, 1 = feet, 2 = wast, 3 = eyes\r
95 .float          watertype;              // a contents value\r
96 .float          ideal_yaw;\r
97 .float          yaw_speed;\r
98 .entity         aiment;\r
99 .entity         goalentity;             // a movetarget or an enemy\r
100 .float          spawnflags;\r
101 .string         target;\r
102 .string         targetname;\r
103 .float          dmg_take;\r
104 .float          dmg_save;\r
105 .entity         dmg_inflictor;\r
106 .entity         owner;          // who launched a missile\r
107 .vector         movedir;        // mostly for doors, but also used for waterjump\r
108 .string         message;                // trigger messages\r
109 .float          sounds;         // either a cd track number or sound number\r
110 .string         noise, noise1, noise2, noise3;  // contains names of wavs to play\r
111 \r
112 void            end_sys_fields;                 // flag for structure dumping\r
113 // End. Lines below this MAY be altered, to some extent\r
114 \r
115 // Built In functions\r
116 void(vector ang) makevectors                    = #1;   // sets v_forward, etc globals\r
117 void(entity e, vector o) setorigin              = #2;\r
118 void(entity e, string m) setmodel               = #3;   // set movetype and solid first\r
119 void(entity e, vector min, vector max) setsize  = #4;\r
120 void() break                                    = #6;\r
121 float() random                                  = #7;   // returns 0 - 1\r
122 void(entity e, float chan, string samp, float vol, float atten) sound = #8;\r
123 vector(vector v) normalize                      = #9;\r
124 void(string e) error                            = #10;\r
125 void(string e) objerror                         = #11;\r
126 float(vector v) vlen                            = #12;\r
127 float(vector v) vectoyaw                        = #13;\r
128 entity() spawn                                  = #14;\r
129 void(entity e) remove                           = #15;\r
130 void(vector v1, vector v2, float nomonsters, entity forent) traceline = #16;    \r
131 entity() checkclient                            = #17;          // returns a client to look for\r
132 entity(entity start, .string fld, string match) find = #18;\r
133 string(string s) precache_sound                 = #19;\r
134 string(string s) precache_model                 = #20;\r
135 void(entity client, string s)stuffcmd           = #21;\r
136 entity(vector org, float rad) findradius        = #22;\r
137 void(string s) dprint                           = #25;\r
138 string(float f) ftos                            = #26;\r
139 string(vector v) vtos                           = #27;\r
140 void() coredump                                 = #28;          // prints all edicts\r
141 void() traceon                                  = #29;          // turns statment trace on\r
142 void() traceoff                                 = #30;\r
143 void(entity e) eprint                           = #31;          // prints an entire edict\r
144 float(float yaw, float dist) walkmove           = #32;          // returns TRUE or FALSE\r
145 float(float yaw, float dist) droptofloor        = #34;          // TRUE if landed on floor\r
146 void(float style, string value) lightstyle      = #35;\r
147 float(float v) rint                             = #36;          // round to nearest int\r
148 float(float v) floor                            = #37;          // largest integer <= v\r
149 float(float v) ceil                             = #38;          // smallest integer >= v\r
150 float(entity e) checkbottom                     = #40;          // true if self is on ground\r
151 float(vector v) pointcontents                   = #41;          // returns a CONTENT_*\r
152 float(float f) fabs                             = #43;\r
153 vector(entity e, float speed) aim               = #44;          // returns the shooting vector\r
154 float(string s) cvar                            = #45;          // return cvar.value\r
155 void(string s) localcmd                         = #46;          // put string into local que\r
156 entity(entity e) nextent                        = #47;          // for looping through all ents\r
157 void() ChangeYaw                                = #49;          // turn towards self.ideal_yaw\r
158 vector(vector v) vectoangles                    = #51;\r
159 void(float to, float f) WriteByte               = #52;\r
160 void(float to, float f) WriteChar               = #53;\r
161 void(float to, float f) WriteShort              = #54;\r
162 void(float to, float f) WriteLong               = #55;\r
163 void(float to, float f) WriteCoord              = #56;\r
164 void(float to, float f) WriteAngle              = #57;\r
165 void(float to, string s) WriteString            = #58;\r
166 void(float to, entity s) WriteEntity            = #59;\r
167 void(float step) movetogoal                     = #67;\r
168 string(string s) precache_file                  = #68;          // no effect except for -copy\r
169 void(entity e) makestatic                       = #69;\r
170 void(string s) changelevel                      = #70;\r
171 void(string var, string val) cvar_set           = #72;          // sets cvar.value\r
172 void(entity client, string s) centerprint       = #73;          // sprint, but in middle\r
173 void(entity client, string s, string s) centerprint2 = #73;\r
174 void(entity client, string s, string s, string s) centerprint3 = #73;\r
175 void(entity client, string s, string s, string s, string s) centerprint4 = #73;\r
176 void(entity client, string s, string s, string s, string s, string s) centerprint5 = #73;\r
177 void(entity client, string s, string s, string s, string s, string s, string s) centerprint6 = #73;\r
178 void(entity client, string s, string s, string s, string s, string s, string s, string s) centerprint7 = #73;\r
179 void(vector pos, string samp, float vol, float atten) ambientsound = #74;\r
180 string(string s) precache_model2                = #75;  // registered version only\r
181 string(string s) precache_sound2                = #76;  // registered version only\r
182 string(string s) precache_file2                 = #77;  // registered version only\r
183 void(entity e) setspawnparms                    = #78;  // set parm1... to the\r
184 \r
185 //\r
186 // constants\r
187 //\r
188 \r
189 float   FALSE                                   = 0;\r
190 float   TRUE                                    = 1;\r
191 \r
192 // edict.flags\r
193 float   FL_FLY                                  = 1;\r
194 float   FL_SWIM                                 = 2;\r
195 float   FL_CLIENT                               = 8;    // set for all client edicts\r
196 float   FL_INWATER                              = 16;   // for enter / leave water splash\r
197 float   FL_MONSTER                              = 32;\r
198 float   FL_GODMODE                              = 64;   // player cheat\r
199 float   FL_NOTARGET                             = 128;  // player cheat\r
200 float   FL_ITEM                                 = 256;  // extra wide size for bonus items\r
201 float   FL_ONGROUND                             = 512;  // standing on something\r
202 float   FL_PARTIALGROUND                = 1024; // not all corners are valid\r
203 float   FL_WATERJUMP                    = 2048; // player jumping out of water\r
204 float   FL_JUMPRELEASED                 = 4096; // for jump debouncing\r
205 \r
206 // edict.movetype values\r
207 float   MOVETYPE_NONE                   = 0;    // never moves\r
208 float   MOVETYPE_ANGLENOCLIP            = 1;\r
209 float   MOVETYPE_ANGLECLIP              = 2;\r
210 float   MOVETYPE_WALK                   = 3;    // players only\r
211 float   MOVETYPE_STEP                   = 4;    // discrete, not real time unless fall\r
212 float   MOVETYPE_FLY                    = 5;\r
213 float   MOVETYPE_TOSS                   = 6;    // gravity\r
214 float   MOVETYPE_PUSH                   = 7;    // no clip to world, push and crush\r
215 float   MOVETYPE_NOCLIP                 = 8;\r
216 float   MOVETYPE_FLYMISSILE             = 9;    // fly with extra size against monsters\r
217 float   MOVETYPE_BOUNCE                 = 10;\r
218 //float MOVETYPE_BOUNCEMISSILE          = 11;   // bounce with extra size\r
219 \r
220 // edict.solid values\r
221 float   SOLID_NOT                               = 0;    // no interaction with other objects\r
222 float   SOLID_TRIGGER                   = 1;    // touch on edge, but not blocking\r
223 float   SOLID_BBOX                              = 2;    // touch on edge, block\r
224 float   SOLID_SLIDEBOX                  = 3;    // touch on edge, but not an onground\r
225 float   SOLID_BSP                               = 4;    // bsp clip, touch on edge, block\r
226 \r
227 // range values\r
228 float   RANGE_MELEE                             = 0;\r
229 float   RANGE_NEAR                              = 1;\r
230 float   RANGE_MID                               = 2;\r
231 float   RANGE_FAR                               = 3;\r
232 \r
233 // deadflag values\r
234 \r
235 float   DEAD_NO                                 = 0;\r
236 float   DEAD_DYING                              = 1;\r
237 float   DEAD_DEAD                               = 2;\r
238 float   DEAD_RESPAWNABLE                        = 3;\r
239 float   DEAD_RESPAWNING                         = 4;\r
240 \r
241 // takedamage values\r
242 \r
243 float   DAMAGE_NO                               = 0;\r
244 float   DAMAGE_YES                              = 1;\r
245 float   DAMAGE_AIM                              = 2;\r
246 \r
247 .void()         th_stand;\r
248 .void()         th_walk;\r
249 .void()         th_run;\r
250 .void(entity attacker, float damage)            th_pain;\r
251 .void()         th_die;\r
252 .void()         th_missile;\r
253 .void()         th_melee;\r
254 .void()         th_gib;\r
255 \r
256 // point content values\r
257 \r
258 float   CONTENT_EMPTY                   = -1;\r
259 float   CONTENT_SOLID                   = -2;\r
260 float   CONTENT_WATER                   = -3;\r
261 float   CONTENT_SLIME                   = -4;\r
262 float   CONTENT_LAVA                    = -5;\r
263 float   CONTENT_SKY                     = -6;\r
264 \r
265 float   STATE_RAISED            = 0;\r
266 float   STATE_LOWERED           = 1;\r
267 float   STATE_UP                = 2;\r
268 float   STATE_DOWN              = 3;\r
269 \r
270 vector  VEC_ORIGIN = '0 0 0';\r
271 vector  VEC_HULL_MIN = '-16 -16 -24';\r
272 vector  VEC_HULL_MAX = '16 16 32';\r
273 \r
274 vector  VEC_HULL2_MIN = '-32 -32 -24';\r
275 vector  VEC_HULL2_MAX = '32 32 64';\r
276 \r
277 // protocol bytes\r
278 float   SVC_BAD                 = 0;\r
279 float   SVC_NOP                 = 1;\r
280 float   SVC_DISCONNECT          = 2;\r
281 float   SVC_UPDATESTAT          = 3;\r
282 float   SVC_VERSION             = 4;\r
283 float   SVC_SETVIEW             = 5;\r
284 float   SVC_SOUND               = 6;\r
285 float   SVC_TIME                = 7;\r
286 float   SVC_PRINT               = 8;\r
287 float   SVC_STUFFTEXT           = 9;\r
288 float   SVC_SETANGLE            = 10;\r
289 float   SVC_SERVERINFO          = 11;\r
290 float   SVC_LIGHTSTYLE          = 12;\r
291 float   SVC_UPDATENAME          = 13;\r
292 float   SVC_UPDATEFRAGS         = 14;\r
293 float   SVC_CLIENTDATA          = 15;\r
294 float   SVC_STOPSOUND           = 16;\r
295 float   SVC_UPDATECOLORS        = 17;\r
296 float   SVC_PARTICLE            = 18;\r
297 float   SVC_DAMAGE              = 19;\r
298 float   SVC_SPAWNSTATIC         = 20;\r
299 float   SVC_SPAWNBINARY         = 21;\r
300 float   SVC_SPAWNBASELINE       = 22;\r
301 float   SVC_TEMPENTITY          = 23;\r
302 float   SVC_SETPAUSE            = 24;\r
303 float   SVC_SIGNONNUM           = 25;\r
304 float   SVC_CENTERPRINT         = 26;\r
305 float   SVC_KILLEDMONSTER       = 27;\r
306 float   SVC_FOUNDSECRET         = 28;\r
307 float   SVC_SPAWNSTATICSOUND    = 29;   // 1998-08-08 Complete SVC list by Zhenga\r
308 float   SVC_INTERMISSION        = 30;\r
309 float   SVC_FINALE              = 31;\r
310 float   SVC_CDTRACK             = 32;\r
311 float   SVC_SELLSCREEN          = 33;\r
312 float   SVC_CUTSCENE            = 34;   // 1998-08-08 Complete SVC list by Zhenga\r
313 \r
314 /*\r
315 float   TE_SPIKE                = 0;\r
316 float   TE_SUPERSPIKE   = 1;\r
317 float   TE_GUNSHOT              = 2;\r
318 float   TE_EXPLOSION    = 3;\r
319 float   TE_TAREXPLOSION = 4;\r
320 float   TE_LIGHTNING1   = 5;\r
321 float   TE_LIGHTNING2   = 6;\r
322 float   TE_WIZSPIKE             = 7;\r
323 float   TE_KNIGHTSPIKE  = 8;\r
324 float   TE_LIGHTNING3   = 9;\r
325 float   TE_LAVASPLASH   = 10;\r
326 float   TE_TELEPORT             = 11;\r
327 */\r
328 \r
329 // sound channels\r
330 // channel 0 never willingly overrides\r
331 // other channels (1-7) allways override a playing sound on that channel\r
332 float   CHAN_AUTO               = 0;\r
333 float   CHAN_WEAPON             = 1;\r
334 float   CHAN_VOICE              = 2;\r
335 float   CHAN_ITEM               = 3;\r
336 float   CHAN_BODY               = 4;\r
337 float   CHAN_MUSIC              = 5;\r
338 \r
339 float   ATTN_NONE               = 0;\r
340 float   ATTN_NORM               = 1;\r
341 float   ATTN_IDLE               = 2;\r
342 float   ATTN_STATIC             = 3;\r
343 \r
344 // update types\r
345 \r
346 float   UPDATE_GENERAL  = 0;\r
347 float   UPDATE_STATIC   = 1;\r
348 float   UPDATE_BINARY   = 2;\r
349 float   UPDATE_TEMP             = 3;\r
350 \r
351 // entity effects\r
352 \r
353 float   EF_BRIGHTFIELD  = 1;\r
354 float   EF_MUZZLEFLASH  = 2;\r
355 float   EF_BRIGHTLIGHT  = 4;\r
356 float   EF_DIMLIGHT     = 8;\r
357 \r
358 \r
359 // messages\r
360 float   MSG_BROADCAST   = 0;            // unreliable to all\r
361 float   MSG_ONE                 = 1;            // reliable to one (msg_entity)\r
362 float   MSG_ALL                 = 2;            // reliable to all\r
363 float   MSG_INIT                = 3;            // write to the init string\r
364 \r
365 float   AS_STRAIGHT             = 1;\r
366 float   AS_SLIDING              = 2;\r
367 float   AS_MELEE                = 3;\r
368 float   AS_MISSILE              = 4;\r
369 \r
370 void() SUB_Null = {};\r
371 float(float null) SUB_Null2 = {return FALSE;};\r
372 \r
373 // Quake assumes these are defined.\r
374 entity activator;\r
375 string string_null;    // null string, nothing should be held here\r
376 \r
377 .string         wad, map;\r
378 .float worldtype, delay, wait, lip, light_lev, speed, style, skill;\r
379 .string killtarget;\r
380 .vector pos1, pos2, mangle;\r
381 \r
382 void(vector o, vector d, float color, float count) particle = #48;// start a particle effect\r
383 void(string s) bprint                           = #23;\r
384 void(entity client, string s) sprint            = #24;\r
385 void() SUB_Remove = {remove(self);};\r
386 // End\r
387 \r
388 entity newmis;\r
389 \r
390 float sv_gravity;\r
391 float sv_maxspeed;\r
392 float sv_friction;\r
393 float sv_accelerate;\r
394 float sv_stopspeed;\r
395 \r
396 float visibleneighbours;\r
397 \r
398 .float ltntime;\r
399 .float confirm, confirm_ignore;\r
400 \r
401 .entity current_navnode, other_navnode;\r
402 \r
403 entity navnode_chain;\r
404 .entity list, link0, link1, link2, link3, link4, link5, link6, link7, link8, link9;\r
405 .entity link10, link11, link12, link13, link14, link15, link16, link17, link18, link19;\r
406 .float sflags;\r
407 .float lflags0, lflags1, lflags2, lflags3, lflags4, lflags5, lflags6, lflags7, lflags8, lflags9;\r
408 .float lflags10, lflags11, lflags12, lflags13, lflags14, lflags15, lflags16, lflags17, lflags18, lflags19;\r
409 float navnodes;\r
410 \r
411 float S_TELEPORT = 1;\r
412 float S_DOOR = 2;\r
413 float S_TOUCH = 4;\r
414 \r
415 float LF_NOLINK = 1;\r
416 float LF_NOWALK = 2;\r
417 float LF_BAD = 4;\r
418 float LF_BIGDROP = 8;\r
419 float LF_REMOTE = 16;\r
420 \r
421 float C_DELETE_NAVNODE = 1;\r
422 float C_DELETE_PLANE = 2;\r
423 float C_SAVE = 3;\r
424 \r
425 .float buttonflag;\r
426 float B_FLAG0 = 1;\r
427 float B_FLAG2 = 2;\r
428 \r
429 .float axis, lockselection;\r
430 \r
431 .entity plane_chain, plane_next, plane_prev;\r
432 .entity current_plane;\r
433 \r
434 float M_CLOSEST = 0;\r
435 float M_OVERLAP = 1;\r
436 .float selmode;\r
437 \r
438 .float gridsize;\r
439 \r
440 vector nullvector;\r
441 .float menu_time;\r
442 entity tracewalkent; // invisible entity that is reused for all tracewalks\r
443 \r
444 .entity current_clippoint, clippoint1, clippoint2, clippoint3;\r
445 .entity navorg1, navorg2;\r
446 \r
447 void(float beamtype, vector bmins, vector bmaxs) BeamBox;