1 // These lines CANNOT be altered/moved
\r
7 float force_retouch; // force all entities to touch triggers
\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
27 float trace_inwater;
\r
29 entity msg_entity; // destination of single entity writes
\r
30 void() main; // only for testing
\r
32 void() PlayerPreThink;
\r
33 void() PlayerPostThink;
\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
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
47 .vector origin; // ***
\r
48 .vector oldorigin; // ***
\r
52 .vector punchangle; // temp angle adjust from damage or recoil
\r
53 .string classname; // spawn function
\r
58 .vector mins, maxs; // bounding box extents reletive to origin
\r
59 .vector size; // maxs - mins
\r
63 .void() blocked; // for doors or plats, called when can't push other
\r
65 .entity groundentity;
\r
68 .float weapon; // one of the IT_SHOTGUN, etc flags
\r
69 .string weaponmodel;
\r
72 .float ammo_shells, ammo_nails, ammo_rockets, ammo_cells;
\r
73 .float items; // bit flags
\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
83 .vector v_angle; // view / targeting angle for players
\r
84 .float idealpitch; // calculated pitch angle for lookup up slopes
\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
94 .float waterlevel; // 0 = not in, 1 = feet, 2 = wast, 3 = eyes
\r
95 .float watertype; // a contents value
\r
99 .entity goalentity; // a movetarget or an enemy
\r
102 .string targetname;
\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
112 void end_sys_fields; // flag for structure dumping
\r
113 // End. Lines below this MAY be altered, to some extent
\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
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
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
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
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
228 float RANGE_MELEE = 0;
\r
229 float RANGE_NEAR = 1;
\r
230 float RANGE_MID = 2;
\r
231 float RANGE_FAR = 3;
\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
241 // takedamage values
\r
243 float DAMAGE_NO = 0;
\r
244 float DAMAGE_YES = 1;
\r
245 float DAMAGE_AIM = 2;
\r
250 .void(entity attacker, float damage) th_pain;
\r
252 .void() th_missile;
\r
256 // point content values
\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
265 float STATE_RAISED = 0;
\r
266 float STATE_LOWERED = 1;
\r
267 float STATE_UP = 2;
\r
268 float STATE_DOWN = 3;
\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
274 vector VEC_HULL2_MIN = '-32 -32 -24';
\r
275 vector VEC_HULL2_MAX = '32 32 64';
\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
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
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
339 float ATTN_NONE = 0;
\r
340 float ATTN_NORM = 1;
\r
341 float ATTN_IDLE = 2;
\r
342 float ATTN_STATIC = 3;
\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
353 float EF_BRIGHTFIELD = 1;
\r
354 float EF_MUZZLEFLASH = 2;
\r
355 float EF_BRIGHTLIGHT = 4;
\r
356 float EF_DIMLIGHT = 8;
\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
365 float AS_STRAIGHT = 1;
\r
366 float AS_SLIDING = 2;
\r
367 float AS_MELEE = 3;
\r
368 float AS_MISSILE = 4;
\r
370 void() SUB_Null = {};
\r
371 float(float null) SUB_Null2 = {return FALSE;};
\r
373 // Quake assumes these are defined.
\r
375 string string_null; // null string, nothing should be held here
\r
378 .float worldtype, delay, wait, lip, light_lev, speed, style, skill;
\r
379 .string killtarget;
\r
380 .vector pos1, pos2, mangle;
\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
393 float sv_accelerate;
\r
394 float sv_stopspeed;
\r
397 .float confirm, confirm_ignore;
\r
399 .entity current_navnode, other_navnode;
\r
401 entity navnode_chain;
\r
402 .entity list, link0, link1, link2, link3, link4, link5, link6, link7, link8, link9;
\r
403 .entity link10, link11, link12, link13, link14, link15, link16, link17, link18, link19;
\r
405 .float lflags0, lflags1, lflags2, lflags3, lflags4, lflags5, lflags6, lflags7, lflags8, lflags9;
\r
406 .float lflags10, lflags11, lflags12, lflags13, lflags14, lflags15, lflags16, lflags17, lflags18, lflags19;
\r
409 float S_TELEPORT = 1;
\r
413 float LF_NOLINK = 1;
\r
414 float LF_NOWALK = 2;
\r
416 float LF_BIGDROP = 8;
\r
417 float LF_REMOTE = 16;
\r
419 float C_DELETE_NAVNODE = 1;
\r
420 float C_DELETE_PLANE = 2;
\r
421 float C_AUTOFLAGGER = 3;
\r
429 .float axis, lockselection;
\r
431 .entity plane_chain, plane_next, plane_prev;
\r
432 .entity current_plane;
\r
434 float M_CLOSEST = 0;
\r
435 float M_OVERLAP = 1;
\r
442 entity tracewalkent; // invisible entity that is reused for all tracewalks
\r
444 .entity current_clippoint, clippoint1, clippoint2, clippoint3;
\r
445 .entity navorg1, navorg2;
\r
447 void(float beamtype, vector bmins, vector bmaxs) BeamBox;
\r