home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga 14 / MA_Cover_14.iso / source / c / q1source_amy / qw / progs / defs.qc < prev    next >
Encoding:
Text File  |  1997-07-30  |  24.4 KB  |  729 lines

  1.  
  2. /*
  3. ==============================================================================
  4.  
  5.             SOURCE FOR GLOBALVARS_T C STRUCTURE
  6.  
  7. ==============================================================================
  8. */
  9.  
  10. //
  11. // system globals
  12. //
  13. entity          self;
  14. entity          other;
  15. entity          world;
  16. float           time;
  17. float           frametime;
  18.  
  19. entity          newmis;                         // if this is set, the entity that just
  20.                                 // run created a new missile that should
  21.                                 // be simulated immediately
  22.  
  23.  
  24. float           force_retouch;          // force all entities to touch triggers
  25.                                 // next frame.  this is needed because
  26.                                 // non-moving things don't normally scan
  27.                                 // for triggers, and when a trigger is
  28.                                 // created (like a teleport trigger), it
  29.                                 // needs to catch everything.
  30.                                 // decremented each frame, so set to 2
  31.                                 // to guarantee everything is touched
  32. string          mapname;
  33.  
  34. float           serverflags;            // propagated from level to level, used to
  35.                                 // keep track of completed episodes
  36.  
  37. float           total_secrets;
  38. float           total_monsters;
  39.  
  40. float           found_secrets;          // number of secrets found
  41. float           killed_monsters;        // number of monsters killed
  42.  
  43.  
  44. // spawnparms are used to encode information about clients across server
  45. // level changes
  46. float           parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9, parm10, parm11, parm12, parm13, parm14, parm15, parm16;
  47.  
  48. //
  49. // global variables set by built in functions
  50. //      
  51. vector          v_forward, v_up, v_right;       // set by makevectors()
  52.     
  53. // set by traceline / tracebox
  54. float           trace_allsolid;
  55. float           trace_startsolid;
  56. float           trace_fraction;
  57. vector          trace_endpos;
  58. vector          trace_plane_normal;
  59. float           trace_plane_dist;
  60. entity          trace_ent;
  61. float           trace_inopen;
  62. float           trace_inwater;
  63.  
  64. entity          msg_entity;                             // destination of single entity writes
  65.  
  66. //
  67. // required prog functions
  68. //
  69. void()          main;                                           // only for testing
  70.  
  71. void()          StartFrame;
  72.  
  73. void()          PlayerPreThink;
  74. void()          PlayerPostThink;
  75.  
  76. void()          ClientKill;
  77. void()          ClientConnect;
  78. void()          PutClientInServer;              // call after setting the parm1... parms
  79. void()          ClientDisconnect;
  80.  
  81. void()          SetNewParms;                    // called when a client first connects to
  82.                                     // a server. sets parms so they can be
  83.                                     // saved off for restarts
  84.  
  85. void()          SetChangeParms;                 // call to set parms for self so they can
  86.                                     // be saved for a level transition
  87.  
  88.  
  89. //================================================
  90. void            end_sys_globals;                // flag for structure dumping
  91. //================================================
  92.  
  93. /*
  94. ==============================================================================
  95.  
  96.             SOURCE FOR ENTVARS_T C STRUCTURE
  97.  
  98. ==============================================================================
  99. */
  100.  
  101. //
  102. // system fields (*** = do not set in prog code, maintained by C code)
  103. //
  104. .float          modelindex;             // *** model index in the precached list
  105. .vector         absmin, absmax; // *** origin + mins / maxs
  106.  
  107. .float          ltime;                  // local time for entity
  108. .float          lastruntime;    // *** to allow entities to run out of sequence
  109.  
  110. .float          movetype;
  111. .float          solid;
  112.  
  113. .vector         origin;                 // ***
  114. .vector         oldorigin;              // ***
  115. .vector         velocity;
  116. .vector         angles;
  117. .vector         avelocity;
  118.  
  119. .string         classname;              // spawn function
  120. .string         model;
  121. .float          frame;
  122. .float          skin;
  123. .float          effects;
  124.  
  125. .vector         mins, maxs;             // bounding box extents reletive to origin
  126. .vector         size;                   // maxs - mins
  127.  
  128. .void()         touch;
  129. .void()         use;
  130. .void()         think;
  131. .void()         blocked;                // for doors or plats, called when can't push other
  132.  
  133. .float          nextthink;
  134. .entity         groundentity;
  135.  
  136.  
  137.  
  138. // stats
  139. .float          health;
  140. .float          frags;
  141. .float          weapon;                 // one of the IT_SHOTGUN, etc flags
  142. .string         weaponmodel;
  143. .float          weaponframe;
  144. .float          currentammo;
  145. .float          ammo_shells, ammo_nails, ammo_rockets, ammo_cells;
  146.  
  147. .float          items;                  // bit flags
  148.  
  149. .float          takedamage;
  150. .entity         chain;
  151. .float          deadflag;
  152.  
  153. .vector         view_ofs;                       // add to origin to get eye point
  154.  
  155.  
  156. .float          button0;                // fire
  157. .float          button1;                // use
  158. .float          button2;                // jump
  159.  
  160. .float          impulse;                // weapon changes
  161.  
  162. .float          fixangle;
  163. .vector         v_angle;                // view / targeting angle for players
  164.  
  165. .string         netname;
  166.  
  167. .entity         enemy;
  168.  
  169. .float          flags;
  170.  
  171. .float          colormap;
  172. .float          team;
  173.  
  174. .float          max_health;             // players maximum health is stored here
  175.  
  176. .float          teleport_time;  // don't back up
  177.  
  178. .float          armortype;              // save this fraction of incoming damage
  179. .float          armorvalue;
  180.  
  181. .float          waterlevel;             // 0 = not in, 1 = feet, 2 = wast, 3 = eyes
  182. .float          watertype;              // a contents value
  183.  
  184. .float          ideal_yaw;
  185. .float          yaw_speed;
  186.  
  187. .entity         aiment;
  188.  
  189. .entity         goalentity;             // a movetarget or an enemy
  190.  
  191. .float          spawnflags;
  192.  
  193. .string         target;
  194. .string         targetname;
  195.  
  196. // damage is accumulated through a frame. and sent as one single
  197. // message, so the super shotgun doesn't generate huge messages
  198. .float          dmg_take;
  199. .float          dmg_save;
  200. .entity         dmg_inflictor;
  201.  
  202. .entity         owner;          // who launched a missile
  203. .vector         movedir;        // mostly for doors, but also used for waterjump
  204.  
  205. .string         message;                // trigger messages
  206.  
  207. .float          sounds;         // either a cd track number or sound number
  208.  
  209. .string         noise, noise1, noise2, noise3;  // contains names of wavs to play
  210.  
  211. //================================================
  212. void            end_sys_fields;                 // flag for structure dumping
  213. //================================================
  214.  
  215. /*
  216. ==============================================================================
  217.  
  218.                 VARS NOT REFERENCED BY C CODE
  219.  
  220. ==============================================================================
  221. */
  222.  
  223.  
  224. //
  225. // constants
  226. //
  227.  
  228. float   FALSE                                   = 0;
  229. float   TRUE                                    = 1;
  230.  
  231. // edict.flags
  232. float   FL_FLY                                  = 1;
  233. float   FL_SWIM                                 = 2;
  234. float   FL_CLIENT                               = 8;    // set for all client edicts
  235. float   FL_INWATER                              = 16;   // for enter / leave water splash
  236. float   FL_MONSTER                              = 32;
  237. float   FL_GODMODE                              = 64;   // player cheat
  238. float   FL_NOTARGET                             = 128;  // player cheat
  239. float   FL_ITEM                                 = 256;  // extra wide size for bonus items
  240. float   FL_ONGROUND                             = 512;  // standing on something
  241. float   FL_PARTIALGROUND                = 1024; // not all corners are valid
  242. float   FL_WATERJUMP                    = 2048; // player jumping out of water
  243. float   FL_JUMPRELEASED                 = 4096; // for jump debouncing
  244.  
  245. // edict.movetype values
  246. float   MOVETYPE_NONE                   = 0;    // never moves
  247. //float MOVETYPE_ANGLENOCLIP    = 1;
  248. //float MOVETYPE_ANGLECLIP              = 2;
  249. float   MOVETYPE_WALK                   = 3;    // players only
  250. float   MOVETYPE_STEP                   = 4;    // discrete, not real time unless fall
  251. float   MOVETYPE_FLY                    = 5;
  252. float   MOVETYPE_TOSS                   = 6;    // gravity
  253. float   MOVETYPE_PUSH                   = 7;    // no clip to world, push and crush
  254. float   MOVETYPE_NOCLIP                 = 8;
  255. float   MOVETYPE_FLYMISSILE             = 9;    // fly with extra size against monsters
  256. float   MOVETYPE_BOUNCE                 = 10;
  257. float   MOVETYPE_BOUNCEMISSILE  = 11;   // bounce with extra size
  258.  
  259. // edict.solid values
  260. float   SOLID_NOT                               = 0;    // no interaction with other objects
  261. float   SOLID_TRIGGER                   = 1;    // touch on edge, but not blocking
  262. float   SOLID_BBOX                              = 2;    // touch on edge, block
  263. float   SOLID_SLIDEBOX                  = 3;    // touch on edge, but not an onground
  264. float   SOLID_BSP                               = 4;    // bsp clip, touch on edge, block
  265.  
  266. // range values
  267. float   RANGE_MELEE                             = 0;
  268. float   RANGE_NEAR                              = 1;
  269. float   RANGE_MID                               = 2;
  270. float   RANGE_FAR                               = 3;
  271.  
  272. // deadflag values
  273.  
  274. float   DEAD_NO                                 = 0;
  275. float   DEAD_DYING                              = 1;
  276. float   DEAD_DEAD                               = 2;
  277. float   DEAD_RESPAWNABLE                = 3;
  278.  
  279. // takedamage values
  280.  
  281. float   DAMAGE_NO                               = 0;
  282. float   DAMAGE_YES                              = 1;
  283. float   DAMAGE_AIM                              = 2;
  284.  
  285. // items
  286. float   IT_AXE                                  = 4096;
  287. float   IT_SHOTGUN                              = 1;
  288. float   IT_SUPER_SHOTGUN                = 2;
  289. float   IT_NAILGUN                              = 4;
  290. float   IT_SUPER_NAILGUN                = 8;
  291. float   IT_GRENADE_LAUNCHER             = 16;
  292. float   IT_ROCKET_LAUNCHER              = 32;
  293. float   IT_LIGHTNING                    = 64;
  294. float   IT_EXTRA_WEAPON                 = 128;
  295.  
  296. float   IT_SHELLS                               = 256;
  297. float   IT_NAILS                                = 512;
  298. float   IT_ROCKETS                              = 1024;
  299. float   IT_CELLS                                = 2048;
  300.  
  301. float   IT_ARMOR1                               = 8192;
  302. float   IT_ARMOR2                               = 16384;
  303. float   IT_ARMOR3                               = 32768;
  304. float   IT_SUPERHEALTH                  = 65536;
  305.  
  306. float   IT_KEY1                                 = 131072;
  307. float   IT_KEY2                                 = 262144;
  308.  
  309. float   IT_INVISIBILITY                 = 524288;
  310. float   IT_INVULNERABILITY              = 1048576;
  311. float   IT_SUIT                                 = 2097152;
  312. float   IT_QUAD                                 = 4194304;
  313.  
  314. // point content values
  315.  
  316. float   CONTENT_EMPTY                   = -1;
  317. float   CONTENT_SOLID                   = -2;
  318. float   CONTENT_WATER                   = -3;
  319. float   CONTENT_SLIME                   = -4;
  320. float   CONTENT_LAVA                    = -5;
  321. float   CONTENT_SKY                             = -6;
  322.  
  323. float   STATE_TOP               = 0;
  324. float   STATE_BOTTOM    = 1;
  325. float   STATE_UP                = 2;
  326. float   STATE_DOWN              = 3;
  327.  
  328. vector  VEC_ORIGIN = '0 0 0';
  329. vector  VEC_HULL_MIN = '-16 -16 -24';
  330. vector  VEC_HULL_MAX = '16 16 32';
  331.  
  332. vector  VEC_HULL2_MIN = '-32 -32 -24';
  333. vector  VEC_HULL2_MAX = '32 32 64';
  334.  
  335. // protocol bytes
  336. float   SVC_TEMPENTITY          = 23;
  337. float   SVC_KILLEDMONSTER       = 27;
  338. float   SVC_FOUNDSECRET         = 28;
  339. float   SVC_INTERMISSION        = 30;
  340. float   SVC_FINALE                      = 31;
  341. float   SVC_CDTRACK                     = 32;
  342. float   SVC_SELLSCREEN          = 33;
  343. float   SVC_SMALLKICK           = 34;
  344. float   SVC_BIGKICK                     = 35;
  345. float   SVC_MUZZLEFLASH         = 39;
  346.  
  347.  
  348. float   TE_SPIKE                = 0;
  349. float   TE_SUPERSPIKE   = 1;
  350. float   TE_GUNSHOT              = 2;
  351. float   TE_EXPLOSION    = 3;
  352. float   TE_TAREXPLOSION = 4;
  353. float   TE_LIGHTNING1   = 5;
  354. float   TE_LIGHTNING2   = 6;
  355. float   TE_WIZSPIKE             = 7;
  356. float   TE_KNIGHTSPIKE  = 8;
  357. float   TE_LIGHTNING3   = 9;
  358. float   TE_LAVASPLASH   = 10;
  359. float   TE_TELEPORT             = 11;
  360. float   TE_BLOOD                = 12;
  361. float   TE_LIGHTNINGBLOOD = 13;
  362.  
  363. // sound channels
  364. // channel 0 never willingly overrides
  365. // other channels (1-7) allways override a playing sound on that channel
  366. float   CHAN_AUTO               = 0;
  367. float   CHAN_WEAPON             = 1;
  368. float   CHAN_VOICE              = 2;
  369. float   CHAN_ITEM               = 3;
  370. float   CHAN_BODY               = 4;
  371. float   CHAN_NO_PHS_ADD = 8;    // ie: CHAN_BODY+CHAN_NO_PHS_ADD
  372.  
  373. float   ATTN_NONE               = 0;
  374. float   ATTN_NORM               = 1;
  375. float   ATTN_IDLE               = 2;
  376. float   ATTN_STATIC             = 3;
  377.  
  378. // update types
  379.  
  380. float   UPDATE_GENERAL  = 0;
  381. float   UPDATE_STATIC   = 1;
  382. float   UPDATE_BINARY   = 2;
  383. float   UPDATE_TEMP             = 3;
  384.  
  385. // entity effects
  386.  
  387. //float EF_BRIGHTFIELD  = 1;
  388. //float EF_MUZZLEFLASH  = 2;
  389. float   EF_BRIGHTLIGHT  = 4;
  390. float   EF_DIMLIGHT     = 8;
  391. float   EF_FLAG1                = 16;
  392. float   EF_FLAG2                = 32;
  393. // GLQuakeWorld Stuff
  394. float     EF_BLUE        =    64;    // Blue Globe effect for Quad
  395. float    EF_RED        =    128;    // Red Globe effect for Pentagram
  396. // messages
  397. float   MSG_BROADCAST   = 0;            // unreliable to all
  398. float   MSG_ONE                 = 1;            // reliable to one (msg_entity)
  399. float   MSG_ALL                 = 2;            // reliable to all
  400. float   MSG_INIT                = 3;            // write to the init string
  401. float   MSG_MULTICAST   = 4;            // for multicast() call
  402.  
  403. // message levels
  404. float   PRINT_LOW               = 0;            // pickup messages
  405. float   PRINT_MEDIUM        = 1;            // death messages
  406. float   PRINT_HIGH              = 2;            // critical messages
  407. float   PRINT_CHAT              = 3;            // also goes to chat console
  408.  
  409. // multicast sets
  410. float   MULTICAST_ALL   = 0;            // every client
  411. float   MULTICAST_PHS   = 1;            // within hearing
  412. float   MULTICAST_PVS   = 2;            // within sight
  413. float   MULTICAST_ALL_R = 3;            // every client, reliable
  414. float   MULTICAST_PHS_R = 4;            // within hearing, reliable
  415. float   MULTICAST_PVS_R = 5;            // within sight, reliable
  416.  
  417.  
  418.  
  419.  
  420. //================================================
  421.  
  422. //
  423. // globals
  424. //
  425. float   movedist;
  426.  
  427. string  string_null;    // null string, nothing should be held here
  428. float   empty_float;
  429.  
  430. entity  activator;              // the entity that activated a trigger or brush
  431.  
  432. entity  damage_attacker;        // set by T_Damage
  433. entity  damage_inflictor;
  434. float   framecount;
  435.  
  436. //
  437. // cvars checked each frame
  438. //
  439. float           teamplay;
  440. float           timelimit;
  441. float           fraglimit;
  442. float           deathmatch;
  443. float           rj                      =       1;
  444.  
  445. //================================================
  446.  
  447. //
  448. // world fields (FIXME: make globals)
  449. //
  450. .string         wad;
  451. .string         map;
  452. .float          worldtype;      // 0=medieval 1=metal 2=base
  453.  
  454. //================================================
  455.  
  456. .string         killtarget;
  457.  
  458. //
  459. // quakeed fields
  460. //
  461. .float          light_lev;              // not used by game, but parsed by light util
  462. .float          style;
  463.  
  464.  
  465. //
  466. // monster ai
  467. //
  468. .void()         th_stand;
  469. .void()         th_walk;
  470. .void()         th_run;
  471. .void()         th_missile;
  472. .void()         th_melee;
  473. .void(entity attacker, float damage)            th_pain;
  474. .void()         th_die;
  475.  
  476. .entity         oldenemy;               // mad at this player before taking damage
  477.  
  478. .float          speed;
  479.  
  480. .float  lefty;
  481.  
  482. .float  search_time;
  483. .float  attack_state;
  484.  
  485. float   AS_STRAIGHT             = 1;
  486. float   AS_SLIDING              = 2;
  487. float   AS_MELEE                = 3;
  488. float   AS_MISSILE              = 4;
  489.  
  490. //
  491. // player only fields
  492. //
  493. .float          voided;
  494. .float          walkframe;
  495.  
  496. // Zoid Additions
  497. .float        maxspeed;        // Used to set Maxspeed on a player
  498. .float        gravity;        // Gravity Multiplier (0 to 1.0)
  499.  
  500.  
  501.  
  502. .float          attack_finished;
  503. .float          pain_finished;
  504.  
  505. .float          invincible_finished;
  506. .float          invisible_finished;
  507. .float          super_damage_finished;
  508. .float          radsuit_finished;
  509.  
  510. .float          invincible_time, invincible_sound;
  511. .float          invisible_time, invisible_sound;
  512. .float          super_time, super_sound;
  513. .float          rad_time;
  514. .float          fly_sound;
  515.  
  516. .float          axhitme;
  517.  
  518. .float          show_hostile;   // set to time+0.2 whenever a client fires a
  519.                             // weapon or takes damage.  Used to alert
  520.                             // monsters that otherwise would let the player go
  521. .float          jump_flag;              // player jump flag
  522. .float          swim_flag;              // player swimming sound flag
  523. .float          air_finished;   // when time > air_finished, start drowning
  524. .float          bubble_count;   // keeps track of the number of bubbles
  525. .string         deathtype;              // keeps track of how the player died
  526.  
  527. //
  528. // object stuff
  529. //
  530. .string         mdl;
  531. .vector         mangle;                 // angle at start
  532.  
  533. .vector         oldorigin;              // only used by secret door
  534.  
  535. .float          t_length, t_width;
  536.  
  537.  
  538. //
  539. // doors, etc
  540. //
  541. .vector         dest, dest1, dest2;
  542. .float          wait;                   // time from firing to restarting
  543. .float          delay;                  // time from activation to firing
  544. .entity         trigger_field;  // door's trigger entity
  545. .string         noise4;
  546.  
  547. //
  548. // monsters
  549. //
  550. .float          pausetime;
  551. .entity         movetarget;
  552.  
  553.  
  554. //
  555. // doors
  556. //
  557. .float          aflag;
  558. .float          dmg;                    // damage done by door when hit
  559.     
  560. //
  561. // misc
  562. //
  563. .float          cnt;                    // misc flag
  564.     
  565. //
  566. // subs
  567. //
  568. .void()         think1;
  569. .vector         finaldest, finalangle;
  570.  
  571. //
  572. // triggers
  573. //
  574. .float          count;                  // for counting triggers
  575.  
  576.  
  577. //
  578. // plats / doors / buttons
  579. //
  580. .float          lip;
  581. .float          state;
  582. .vector         pos1, pos2;             // top and bottom positions
  583. .float          height;
  584.  
  585. //
  586. // sounds
  587. //
  588. .float          waitmin, waitmax;
  589. .float          distance;
  590. .float          volume;
  591.  
  592.  
  593.  
  594.  
  595. //===========================================================================
  596.     
  597.  
  598. //
  599. // builtin functions
  600. //
  601.  
  602. void(vector ang)        makevectors             = #1;           // sets v_forward, etc globals
  603. void(entity e, vector o) setorigin      = #2;
  604. void(entity e, string m) setmodel       = #3;           // set movetype and solid first
  605. void(entity e, vector min, vector max) setsize = #4;
  606. // #5 was removed
  607. void() break                                            = #6;
  608. float() random                                          = #7;           // returns 0 - 1
  609. void(entity e, float chan, string samp, float vol, float atten) sound = #8;
  610. vector(vector v) normalize                      = #9;
  611. void(string e) error                            = #10;
  612. void(string e) objerror                         = #11;
  613. float(vector v) vlen                            = #12;
  614. float(vector v) vectoyaw                        = #13;
  615. entity() spawn                                          = #14;
  616. void(entity e) remove                           = #15;
  617.  
  618. // sets trace_* globals
  619. // nomonsters can be:
  620. // An entity will also be ignored for testing if forent == test,
  621. // forent->owner == test, or test->owner == forent
  622. // a forent of world is ignored
  623. void(vector v1, vector v2, float nomonsters, entity forent) traceline = #16;    
  624.  
  625. entity() checkclient                            = #17;  // returns a client to look for
  626. entity(entity start, .string fld, string match) find = #18;
  627. string(string s) precache_sound         = #19;
  628. string(string s) precache_model         = #20;
  629. void(entity client, string s)stuffcmd = #21;
  630. entity(vector org, float rad) findradius = #22;
  631. void(float level, string s) bprint                              = #23;
  632. void(entity client, float level, string s) sprint = #24;
  633. void(string s) dprint                           = #25;
  634. string(float f) ftos                            = #26;
  635. string(vector v) vtos                           = #27;
  636. void() coredump                                         = #28;          // prints all edicts
  637. void() traceon                                          = #29;          // turns statment trace on
  638. void() traceoff                                         = #30;
  639. void(entity e) eprint                           = #31;          // prints an entire edict
  640. float(float yaw, float dist) walkmove   = #32;  // returns TRUE or FALSE
  641. // #33 was removed
  642. float(float yaw, float dist) droptofloor= #34;  // TRUE if landed on floor
  643. void(float style, string value) lightstyle = #35;
  644. float(float v) rint                                     = #36;          // round to nearest int
  645. float(float v) floor                            = #37;          // largest integer <= v
  646. float(float v) ceil                                     = #38;          // smallest integer >= v
  647. // #39 was removed
  648. float(entity e) checkbottom                     = #40;          // true if self is on ground
  649. float(vector v) pointcontents           = #41;          // returns a CONTENT_*
  650. // #42 was removed
  651. float(float f) fabs = #43;
  652. vector(entity e, float speed) aim = #44;                // returns the shooting vector
  653. float(string s) cvar = #45;                                             // return cvar.value
  654. void(string s) localcmd = #46;                                  // put string into local que
  655. entity(entity e) nextent = #47;                                 // for looping through all ents
  656. // #48 was removed
  657. void() ChangeYaw = #49;                                         // turn towards self.ideal_yaw
  658.                                             // at self.yaw_speed
  659. // #50 was removed
  660. vector(vector v) vectoangles                    = #51;
  661.  
  662. //
  663. // direct client message generation
  664. //
  665. void(float to, float f) WriteByte               = #52;
  666. void(float to, float f) WriteChar               = #53;
  667. void(float to, float f) WriteShort              = #54;
  668. void(float to, float f) WriteLong               = #55;
  669. void(float to, float f) WriteCoord              = #56;
  670. void(float to, float f) WriteAngle              = #57;
  671. void(float to, string s) WriteString    = #58;
  672. void(float to, entity s) WriteEntity    = #59;
  673.  
  674. // several removed
  675.  
  676. void(float step) movetogoal                             = #67;
  677.  
  678. string(string s) precache_file          = #68;  // no effect except for -copy
  679. void(entity e) makestatic               = #69;
  680. void(string s) changelevel = #70;
  681.  
  682. //#71 was removed
  683.  
  684. void(string var, string val) cvar_set = #72;    // sets cvar.value
  685.  
  686. void(entity client, string s) centerprint = #73;        // sprint, but in middle
  687.  
  688. void(vector pos, string samp, float vol, float atten) ambientsound = #74;
  689.  
  690. string(string s) precache_model2        = #75;          // registered version only
  691. string(string s) precache_sound2        = #76;          // registered version only
  692. string(string s) precache_file2         = #77;          // registered version only
  693.  
  694. void(entity e) setspawnparms            = #78;          // set parm1... to the
  695.                                                 // values at level start
  696.                                                 // for coop respawn
  697. void(entity killer, entity killee) logfrag = #79;       // add to stats
  698.  
  699. string(entity e, string key) infokey    = #80;  // get a key value (world = serverinfo)
  700. float(string s) stof                            = #81;          // convert string to float
  701. void(vector where, float set) multicast = #82;  // sends the temp message to a set
  702.                                                 // of clients, possibly in PVS or PHS
  703.  
  704. //============================================================================
  705.  
  706. //
  707. // subs.qc
  708. //
  709. void(vector tdest, float tspeed, void() func) SUB_CalcMove;
  710. void(entity ent, vector tdest, float tspeed, void() func) SUB_CalcMoveEnt;
  711. void(vector destangle, float tspeed, void() func) SUB_CalcAngleMove;
  712. void()  SUB_CalcMoveDone;
  713. void() SUB_CalcAngleMoveDone;
  714. void() SUB_Null;
  715. void() SUB_UseTargets;
  716. void() SUB_Remove;
  717.  
  718. //
  719. //      combat.qc
  720. //
  721. void(entity targ, entity inflictor, entity attacker, float damage) T_Damage;
  722.  
  723.  
  724. float (entity e, float healamount, float ignore) T_Heal; // health function
  725.  
  726. float(entity targ, entity inflictor) CanDamage;
  727.  
  728.  
  729.