2 ==============================================================================
4 SOURCE FOR GLOBALVARS_T C STRUCTURE
5 MUST NOT BE MODIFIED, OR CRC ERRORS WILL APPEAR
7 ==============================================================================
19 float force_retouch; // force all entities to touch triggers
20 // next frame. this is needed because
21 // non-moving things don't normally scan
22 // for triggers, and when a trigger is
23 // created (like a teleport trigger), it
24 // needs to catch everything.
25 // decremented each frame, so set to 2
26 // to guarantee everything is touched
33 float serverflags; // propagated from level to level, used to
34 // keep track of completed episodes
39 float found_secrets; // number of secrets found
40 float killed_monsters; // number of monsters killed
43 // spawnparms are used to encode information about clients across server
45 float parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9, parm10, parm11, parm12, parm13, parm14, parm15, parm16;
48 // global variables set by built in functions
50 vector v_forward, v_up, v_right; // set by makevectors()
52 // set by traceline / tracebox
54 float trace_startsolid;
57 vector trace_plane_normal;
58 float trace_plane_dist;
63 entity msg_entity; // destination of single entity writes
66 // required prog functions
68 void() main; // only for testing
72 void() PlayerPreThink;
73 void() PlayerPostThink;
77 void() PutClientInServer; // call after setting the parm1... parms
78 void() ClientDisconnect;
80 void() SetNewParms; // called when a client first connects to
81 // a server. sets parms so they can be
82 // saved off for restarts
84 void() SetChangeParms; // call to set parms for self so they can
85 // be saved for a level transition
88 //================================================
89 void end_sys_globals; // flag for structure dumping
90 //================================================
93 ==============================================================================
95 SOURCE FOR ENTVARS_T C STRUCTURE
96 MUST NOT BE MODIFIED, OR CRC ERRORS WILL APPEAR
98 ==============================================================================
102 // system fields (*** = do not set in prog code, maintained by C code)
104 .float modelindex; // *** model index in the precached list
105 .vector absmin, absmax; // *** origin + mins / maxs
107 .float ltime; // local time for entity
111 .vector origin; // ***
112 .vector oldorigin; // ***
117 .vector punchangle; // temp angle adjust from damage or recoil
119 .string classname; // spawn function
125 .vector mins, maxs; // bounding box extents reletive to origin
126 .vector size; // maxs - mins
131 .void() blocked; // for doors or plats, called when can't push other
134 .entity groundentity;
139 .float weapon; // one of the IT_SHOTGUN, etc flags
143 .float ammo_shells, ammo_nails, ammo_rockets, ammo_cells;
145 .float items; // bit flags
151 .vector view_ofs; // add to origin to get eye point
154 .float button0; // fire
155 .float button1; // use
156 .float button2; // jump
158 .float impulse; // weapon changes
161 .vector v_angle; // view / targeting angle for players
162 .float idealpitch; // calculated pitch angle for lookup up slopes
174 .float max_health; // players maximum health is stored here
176 .float teleport_time; // don't back up
178 .float armortype; // save this fraction of incoming damage
181 .float waterlevel; // 0 = not in, 1 = feet, 2 = wast, 3 = eyes
182 .float watertype; // a contents value
189 .entity goalentity; // a movetarget or an enemy
196 // damage is accumulated through a frame. and sent as one single
197 // message, so the super shotgun doesn't generate huge messages
200 .entity dmg_inflictor;
202 .entity owner; // who launched a missile
203 .vector movedir; // mostly for doors, but also used for waterjump
205 .string message; // trigger messages
207 .float sounds; // either a cd track number or sound number
209 .string noise, noise1, noise2, noise3; // contains names of wavs to play
211 //================================================
212 void end_sys_fields; // flag for structure dumping
213 //================================================
216 ==============================================================================
220 ==============================================================================
231 float FL_CLIENT = 8; // set for all client edicts
232 float FL_INWATER = 16; // for enter / leave water splash
233 float FL_MONSTER = 32;
234 float FL_GODMODE = 64; // player cheat
235 float FL_NOTARGET = 128; // player cheat
236 float FL_ITEM = 256; // extra wide size for bonus items
237 float FL_ONGROUND = 512; // standing on something
238 float FL_PARTIALGROUND = 1024; // not all corners are valid
239 float FL_WATERJUMP = 2048; // player jumping out of water
240 float FL_JUMPRELEASED = 4096; // for jump debouncing
242 // edict.movetype values
243 float MOVETYPE_NONE = 0; // never moves
244 //float MOVETYPE_ANGLENOCLIP = 1;
245 //float MOVETYPE_ANGLECLIP = 2;
246 float MOVETYPE_WALK = 3; // players only
247 float MOVETYPE_STEP = 4; // discrete, not real time unless fall
248 float MOVETYPE_FLY = 5;
249 float MOVETYPE_TOSS = 6; // gravity
250 float MOVETYPE_PUSH = 7; // no clip to world, push and crush
251 float MOVETYPE_NOCLIP = 8;
252 float MOVETYPE_FLYMISSILE = 9; // fly with extra size against monsters
253 float MOVETYPE_BOUNCE = 10;
254 float MOVETYPE_BOUNCEMISSILE = 11; // bounce with extra size
256 // edict.solid values
257 float SOLID_NOT = 0; // no interaction with other objects
258 float SOLID_TRIGGER = 1; // touch on edge, but not blocking
259 float SOLID_BBOX = 2; // touch on edge, block
260 float SOLID_SLIDEBOX = 3; // touch on edge, but not an onground
261 float SOLID_BSP = 4; // bsp clip, touch on edge, block
264 float RANGE_MELEE = 0;
265 float RANGE_NEAR = 1;
272 float DEAD_DYING = 1;
274 float DEAD_RESPAWNABLE = 3;
275 float DEAD_RESPAWNING = 4; // dead, waiting for buttons to be released
280 float DAMAGE_YES = 1;
281 float DAMAGE_AIM = 2;
285 float IT_SHOTGUN = 1;
286 float IT_SUPER_SHOTGUN = 2;
287 float IT_NAILGUN = 4;
288 float IT_SUPER_NAILGUN = 8;
289 float IT_GRENADE_LAUNCHER = 16;
290 float IT_ROCKET_LAUNCHER = 32;
291 float IT_LIGHTNING = 64;
292 float IT_EXTRA_WEAPON = 128;
294 float IT_SHELLS = 256;
295 float IT_NAILS = 512;
296 float IT_ROCKETS = 1024;
297 float IT_CELLS = 2048;
299 float IT_ARMOR1 = 8192;
300 float IT_ARMOR2 = 16384;
301 float IT_ARMOR3 = 32768;
302 float IT_SUPERHEALTH = 65536;
304 float IT_KEY1 = 131072;
305 float IT_KEY2 = 262144;
307 float IT_INVISIBILITY = 524288;
308 float IT_INVULNERABILITY = 1048576;
309 float IT_SUIT = 2097152;
310 float IT_QUAD = 4194304;
312 // point content values
314 float CONTENT_EMPTY = -1;
315 float CONTENT_SOLID = -2;
316 float CONTENT_WATER = -3;
317 float CONTENT_SLIME = -4;
318 float CONTENT_LAVA = -5;
319 float CONTENT_SKY = -6;
322 float STATE_BOTTOM = 1;
324 float STATE_DOWN = 3;
326 vector VEC_ORIGIN = '0 0 0';
327 vector VEC_HULL_MIN = '-16 -16 -24';
328 vector VEC_HULL_MAX = '16 16 32';
330 vector VEC_HULL2_MIN = '-32 -32 -24';
331 vector VEC_HULL2_MAX = '32 32 64';
334 float SVC_TEMPENTITY = 23;
335 float SVC_KILLEDMONSTER = 27;
336 float SVC_FOUNDSECRET = 28;
337 float SVC_INTERMISSION = 30;
338 float SVC_FINALE = 31;
339 float SVC_CDTRACK = 32;
340 float SVC_SELLSCREEN = 33;
344 float TE_SUPERSPIKE = 1;
345 float TE_GUNSHOT = 2;
346 float TE_EXPLOSION = 3;
347 float TE_TAREXPLOSION = 4;
348 float TE_LIGHTNING1 = 5;
349 float TE_LIGHTNING2 = 6;
350 float TE_WIZSPIKE = 7;
351 float TE_KNIGHTSPIKE = 8;
352 float TE_LIGHTNING3 = 9;
353 float TE_LAVASPLASH = 10;
354 float TE_TELEPORT = 11;
357 // channel 0 never willingly overrides
358 // other channels (1-7) allways override a playing sound on that channel
360 float CHAN_WEAPON = 1;
361 float CHAN_VOICE = 2;
368 float ATTN_STATIC = 3;
372 float UPDATE_GENERAL = 0;
373 float UPDATE_STATIC = 1;
374 float UPDATE_BINARY = 2;
375 float UPDATE_TEMP = 3;
379 float EF_BRIGHTFIELD = 1;
380 float EF_MUZZLEFLASH = 2;
381 float EF_BRIGHTLIGHT = 4;
382 float EF_DIMLIGHT = 8;
386 float MSG_BROADCAST = 0; // unreliable to all
387 float MSG_ONE = 1; // reliable to one (msg_entity)
388 float MSG_ALL = 2; // reliable to all
389 float MSG_INIT = 3; // write to the init string
391 //===========================================================================
397 void(vector ang) makevectors = #1; // sets v_forward, etc globals
398 void(entity e, vector o) setorigin = #2;
399 void(entity e, string m) setmodel = #3; // set movetype and solid first
400 void(entity e, vector min, vector max) setsize = #4;
402 void() break_to_debugger = #6;
403 float() random = #7; // returns 0 - 1
404 void(entity e, float chan, string samp, float vol, float atten) sound = #8;
405 vector(vector v) normalize = #9;
406 void(string e, ...) error = #10;
407 void(string e, ...) objerror = #11;
408 float(vector v) vlen = #12;
409 float(vector v) vectoyaw = #13;
410 entity() spawn = #14;
411 void(entity e) remove = #15;
413 // sets trace_* globals
414 // nomonsters can be:
415 // An entity will also be ignored for testing if forent == test,
416 // forent->owner == test, or test->owner == forent
417 // a forent of world is ignored
418 void(vector v1, vector v2, float nomonsters, entity forent) traceline = #16;
420 entity() checkclient = #17; // returns a client to look for
421 entity(entity start, .string fld, string match) find = #18;
422 string(string s) precache_sound = #19;
423 string(string s) precache_model = #20;
424 void(entity client, string s, ...)stuffcmd = #21;
425 entity(vector org, float rad) findradius = #22;
426 void(string s, ...) bprint = #23;
427 void(entity client, string s, ...) sprint = #24;
428 void(string s, ...) dprint = #25;
429 string(float f) ftos = #26;
430 string(vector v) vtos = #27;
431 void() coredump = #28; // prints all edicts
432 void() traceon = #29; // turns statment trace on
433 void() traceoff = #30;
434 void(entity e) eprint = #31; // prints an entire edict
435 float(float yaw, float dist) walkmove = #32; // returns TRUE or FALSE
437 float() droptofloor= #34; // TRUE if landed on floor
438 void(float style, string value) lightstyle = #35;
439 float(float v) rint = #36; // round to nearest int
440 float(float v) floor = #37; // largest integer <= v
441 float(float v) ceil = #38; // smallest integer >= v
443 float(entity e) checkbottom = #40; // true if self is on ground
444 float(vector v) pointcontents = #41; // returns a CONTENT_*
446 float(float f) fabs = #43;
447 vector(entity e, float speed) aim = #44; // returns the shooting vector
448 float(string s) cvar = #45; // return cvar.value
449 void(string s, ...) localcmd = #46; // put string into local que
450 entity(entity e) nextent = #47; // for looping through all ents
451 void(vector o, vector d, float color, float count) particle = #48;// start a particle effect
452 void() ChangeYaw = #49; // turn towards self.ideal_yaw
455 vector(vector v) vectoangles = #51;
458 // direct client message generation
460 void(float to, float f) WriteByte = #52;
461 void(float to, float f) WriteChar = #53;
462 void(float to, float f) WriteShort = #54;
463 void(float to, float f) WriteLong = #55;
464 void(float to, float f) WriteCoord = #56;
465 void(float to, float f) WriteAngle = #57;
466 void(float to, string s, ...) WriteString = #58;
467 void(float to, entity s) WriteEntity = #59;
470 // broadcast client message generation
473 // void(float f) bWriteByte = #59;
474 // void(float f) bWriteChar = #60;
475 // void(float f) bWriteShort = #61;
476 // void(float f) bWriteLong = #62;
477 // void(float f) bWriteCoord = #63;
478 // void(float f) bWriteAngle = #64;
479 // void(string s) bWriteString = #65;
480 // void(entity e) bWriteEntity = #66;
482 void(float step) movetogoal = #67;
484 string(string s) precache_file = #68; // no effect except for -copy
485 void(entity e) makestatic = #69;
486 void(string s) changelevel = #70;
490 void(string name, string value) cvar_set = #72; // sets cvar.value
492 void(entity client, string s, ...) centerprint = #73; // sprint, but in middle
494 void(vector pos, string samp, float vol, float atten) ambientsound = #74;
496 string(string s) precache_model2 = #75; // registered version only
497 string(string s) precache_sound2 = #76; // registered version only
498 string(string s) precache_file2 = #77; // registered version only
500 void(entity e) setspawnparms = #78; // set parm1... to the
501 // values at level start
504 //============================================================================