home *** CD-ROM | disk | FTP | other *** search
/ Quake 'em / QUAKEEM.BIN / quake / programs / psychoc2 / defs.qc < prev    next >
Encoding:
Text File  |  1996-08-14  |  19.7 KB  |  734 lines

  1. /*
  2. ==============================================================================
  3.  
  4.             SOURCE FOR GLOBALVARS_T C STRUCTURE
  5.  
  6. ==============================================================================
  7. */
  8.  
  9. //
  10. // system globals
  11. //
  12. entity        self;
  13. entity        other;
  14. entity        world;
  15. float        time;
  16. float        frametime;
  17.  
  18. float        force_retouch;        // force all entities to touch triggers
  19.                                 // next frame.  this is needed because
  20.                                 // non-moving things don't normally scan
  21.                                 // for triggers, and when a trigger is
  22.                                 // created (like a teleport trigger), it
  23.                                 // needs to catch everything.
  24.                                 // decremented each frame, so set to 2
  25.                                 // to guarantee everything is touched
  26. string        mapname;
  27.  
  28. float        deathmatch;
  29. float        coop;
  30. float        teamplay;
  31.  
  32. float        serverflags;        // propagated from level to level, used to
  33.                                 // keep track of completed episodes
  34.  
  35. float        total_secrets;
  36. float        total_monsters;
  37.  
  38. float        found_secrets;        // number of secrets found
  39. float        killed_monsters;    // number of monsters killed
  40.  
  41.  
  42. // spawnparms are used to encode information about clients across server
  43. // level changes
  44. float        parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9, parm10, parm11, parm12, parm13, parm14, parm15, parm16;
  45.  
  46. //
  47. // global variables set by built in functions
  48. //    
  49. vector        v_forward, v_up, v_right;    // set by makevectors()
  50.     
  51. // set by traceline / tracebox
  52. float        trace_allsolid;
  53. float        trace_startsolid;
  54. float        trace_fraction;
  55. vector    trace_endpos;
  56. vector    trace_plane_normal;
  57. float        trace_plane_dist;
  58. entity    trace_ent;
  59. float        trace_inopen;
  60. float        trace_inwater;
  61.  
  62. entity        msg_entity;                // destination of single entity writes
  63.  
  64. //
  65. // required prog functions
  66. //
  67. void()         main;                        // only for testing
  68.  
  69. void()        StartFrame;
  70.  
  71. void()         PlayerPreThink;
  72. void()         PlayerPostThink;
  73.  
  74. void()        ClientKill;
  75. void()        ClientConnect;
  76. void()         PutClientInServer;        // call after setting the parm1... parms
  77. void()        ClientDisconnect;
  78.  
  79. void()        SetNewParms;            // called when a client first connects to
  80.                                     // a server. sets parms so they can be
  81.                                     // saved off for restarts
  82.  
  83. void()        SetChangeParms;            // call to set parms for self so they can
  84.                                     // be saved for a level transition
  85.  
  86.  
  87. //================================================
  88. void        end_sys_globals;        // flag for structure dumping
  89. //================================================
  90.  
  91. /*
  92. ==============================================================================
  93.  
  94.             SOURCE FOR ENTVARS_T C STRUCTURE
  95.  
  96. ==============================================================================
  97. */
  98.  
  99. //
  100. // system fields (*** = do not set in prog code, maintained by C code)
  101. //
  102. .float        modelindex;        // *** model index in the precached list
  103. .vector        absmin, absmax;    // *** origin + mins / maxs
  104.  
  105. .float        ltime;            // local time for entity
  106. .float        movetype;
  107. .float        solid;
  108.  
  109. .vector        origin;            // ***
  110. .vector        oldorigin;        // ***
  111. .vector        velocity;
  112. .vector        angles;
  113. .vector        avelocity;
  114.  
  115. .vector        punchangle;        // temp angle adjust from damage or recoil
  116.  
  117. .string        classname;        // spawn function
  118. .string        model;
  119. .float        frame;
  120. .float        skin;
  121. .float        effects;
  122.  
  123. .vector        mins, maxs;        // bounding box extents reletive to origin
  124. .vector        size;            // maxs - mins
  125.  
  126. .void()        touch;
  127. .void()        use;
  128. .void()        think;
  129. .void()        blocked;        // for doors or plats, called when can't push other
  130.  
  131. .float        nextthink;
  132. .entity        groundentity;
  133.  
  134. // stats
  135. .float        health;
  136. .float        frags;
  137. .float        weapon;            // one of the IT_SHOTGUN, etc flags
  138. .string        weaponmodel;
  139. .float        weaponframe;
  140. .float        currentammo;
  141. .float        ammo_shells, ammo_nails, ammo_rockets, ammo_cells;
  142.  
  143. .float        items;            // bit flags
  144.  
  145. .float        takedamage;
  146. .entity        chain;
  147. .float        deadflag;
  148.  
  149. .vector        view_ofs;            // add to origin to get eye point
  150.  
  151.  
  152. .float        button0;        // fire
  153. .float        button1;        // use
  154. .float        button2;        // jump
  155.  
  156. .float        impulse;        // weapon changes
  157.  
  158. .float        fixangle;
  159. .vector        v_angle;        // view / targeting angle for players
  160. .float        idealpitch;        // calculated pitch angle for lookup up slopes
  161.  
  162.  
  163. .string        netname;
  164.  
  165. .entity     enemy;
  166.  
  167. .float        flags;
  168.  
  169. .float        colormap;
  170. .float        team;
  171.  
  172. .float        max_health;        // players maximum health is stored here
  173.  
  174. .float        teleport_time;    // don't back up
  175.  
  176. .float        armortype;        // save this fraction of incoming damage
  177. .float        armorvalue;
  178.  
  179. .float        waterlevel;        // 0 = not in, 1 = feet, 2 = wast, 3 = eyes
  180. .float        watertype;        // a contents value
  181.  
  182. .float        ideal_yaw;
  183. .float        yaw_speed;
  184.  
  185. .entity        aiment;
  186.  
  187. .entity     goalentity;        // a movetarget or an enemy
  188.  
  189. .float        spawnflags;
  190.  
  191. .string        target;
  192. .string        targetname;
  193.  
  194. // damage is accumulated through a frame. and sent as one single
  195. // message, so the super shotgun doesn't generate huge messages
  196. .float        dmg_take;
  197. .float        dmg_save;
  198. .entity        dmg_inflictor;
  199.  
  200. .entity        owner;        // who launched a missile
  201. .vector        movedir;    // mostly for doors, but also used for waterjump
  202.  
  203. .string        message;        // trigger messages
  204.  
  205. .float        sounds;        // either a cd track number or sound number
  206.  
  207. .string        noise, noise1, noise2, noise3;    // contains names of wavs to play
  208.  
  209. //.float      deadtimer;  // auto-respawn timer
  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. // impulse commands
  229. float IMP_TOG_TEAMPLAY     = 100;
  230. float IMP_TOG_NOEXIT       = 101;
  231.  
  232. float IMP_VAR_TIMELIMIT    = 102;
  233. float IMP_VAR_FRAGLIMIT    = 103;
  234. float IMP_VAR_GRAV         = 104;
  235. float IMP_VAR_FRICTION     = 105;
  236.  
  237. float IMP_CMD_RESTART      = 106;
  238. float IMP_CMD_PASSWORD     = 107;
  239. float IMP_CMD_DEOP         = 108;
  240.  
  241. float IMP_PAR_PASS1        = 7;
  242. float IMP_PAR_PASS2        = 42;
  243. float IMP_PAR_PASS3        = 7;
  244.  
  245. // various definitions
  246. float DEADTIME             = 10;    // time until auto respawn
  247. float EXITWAIT             = 5;     // time until exit after after timelimit
  248. float PLAYERLIMIT          = 2;     // max number of players on server
  249. float RCONNECT             = 1;     // reserved connections
  250. float PENTERTIME           = 1;     // time in seconds until someone is kicked for not finishing password
  251. float KTIME                = 5;     // time in seconds until someone is kicked if they dont enter the password
  252. float WAITKILL             = 20;    // nuber of seconds until a waiter/camper/lurker is kicked
  253.  
  254. float FALSE                = 0;
  255. float TRUE                 = 1;
  256.  
  257. // edict.flags
  258. float    FL_FLY                    = 1;
  259. float    FL_SWIM                    = 2;
  260. float    FL_CLIENT                = 8;       // set for all client edicts
  261. float    FL_INWATER                = 16;       // for enter / leave water splash
  262. float    FL_MONSTER                = 32;
  263. float    FL_GODMODE                = 64;       // player cheat
  264. float    FL_NOTARGET                = 128;    // player cheat
  265. float    FL_ITEM                    = 256;    // extra wide size for bonus items
  266. float    FL_ONGROUND                = 512;    // standing on something
  267. float    FL_PARTIALGROUND        = 1024;    // not all corners are valid
  268. float    FL_WATERJUMP            = 2048;    // player jumping out of water
  269. float    FL_JUMPRELEASED      = 4096;  // for jump debouncing
  270.  
  271. // edict.movetype values
  272. float    MOVETYPE_NONE            = 0;    // never moves
  273. //float    MOVETYPE_ANGLENOCLIP    = 1;
  274. //float    MOVETYPE_ANGLECLIP        = 2;
  275. float    MOVETYPE_WALK            = 3;    // players only
  276. float    MOVETYPE_STEP            = 4;    // discrete, not real time unless fall
  277. float    MOVETYPE_FLY            = 5;
  278. float    MOVETYPE_TOSS            = 6;    // gravity
  279. float    MOVETYPE_PUSH            = 7;    // no clip to world, push and crush
  280. float    MOVETYPE_NOCLIP            = 8;
  281. float    MOVETYPE_FLYMISSILE        = 9;    // fly with extra size against monsters
  282. float    MOVETYPE_BOUNCE            = 10;
  283. float    MOVETYPE_BOUNCEMISSILE    = 11;    // bounce with extra size
  284.  
  285. // edict.solid values
  286. float    SOLID_NOT                = 0;    // no interaction with other objects
  287. float    SOLID_TRIGGER            = 1;    // touch on edge, but not blocking
  288. float    SOLID_BBOX                = 2;    // touch on edge, block
  289. float    SOLID_SLIDEBOX            = 3;    // touch on edge, but not an onground
  290. float    SOLID_BSP                = 4;    // bsp clip, touch on edge, block
  291.  
  292. // range values
  293. float    RANGE_MELEE                = 0;
  294. float    RANGE_NEAR                = 1;
  295. float    RANGE_MID                = 2;
  296. float    RANGE_FAR                = 3;
  297.  
  298. // deadflag values
  299.  
  300. float    DEAD_NO                    = 0;
  301. float    DEAD_DYING                = 1;
  302. float    DEAD_DEAD                = 2;
  303. float    DEAD_RESPAWNABLE        = 3;
  304.  
  305. // takedamage values
  306.  
  307. float DAMAGE_NO               = 0;
  308. float DAMAGE_YES              = 1;
  309. float DAMAGE_AIM              = 2;
  310.  
  311. // items
  312. float IT_AXE                  = 4096;
  313. float IT_SHOTGUN              = 1;
  314. float    IT_SUPER_SHOTGUN        = 2;
  315. float IT_NAILGUN              = 4;
  316. float    IT_SUPER_NAILGUN        = 8;
  317. float    IT_GRENADE_LAUNCHER        = 16;
  318. float    IT_ROCKET_LAUNCHER        = 32;
  319. float    IT_LIGHTNING            = 64;
  320. float    IT_EXTRA_WEAPON            = 128;
  321.  
  322. float    IT_SHELLS               = 256;
  323. float    IT_NAILS                = 512;
  324. float    IT_ROCKETS                = 1024;
  325. float    IT_CELLS                   = 2048;
  326.  
  327. float    IT_ARMOR1               = 8192;
  328. float    IT_ARMOR2               = 16384;
  329. float    IT_ARMOR3                 = 32768;
  330. float IT_SUPERHEALTH          = 65536;
  331.  
  332. float    IT_KEY1                 = 131072;
  333. float    IT_KEY2                 = 262144;
  334.  
  335. float IT_INVISIBILITY         = 524288;
  336. float IT_INVULNERABILITY      = 1048576;
  337. float    IT_SUIT                   = 2097152;
  338. float    IT_QUAD                 = 4194304;
  339.  
  340. float IT_ADMIN                = 8388608;
  341.  
  342. // point content values
  343.  
  344. float    CONTENT_EMPTY            = -1;
  345. float    CONTENT_SOLID            = -2;
  346. float    CONTENT_WATER            = -3;
  347. float    CONTENT_SLIME            = -4;
  348. float    CONTENT_LAVA            = -5;
  349. float    CONTENT_SKY                = -6;
  350.  
  351. float    STATE_TOP        = 0;
  352. float    STATE_BOTTOM    = 1;
  353. float    STATE_UP        = 2;
  354. float    STATE_DOWN        = 3;
  355.  
  356. vector    VEC_ORIGIN = '0 0 0';
  357. vector    VEC_HULL_MIN = '-16 -16 -24';
  358. vector    VEC_HULL_MAX = '16 16 32';
  359.  
  360. vector    VEC_HULL2_MIN = '-32 -32 -24';
  361. vector    VEC_HULL2_MAX = '32 32 64';
  362.  
  363. // protocol bytes
  364. float    SVC_TEMPENTITY        = 23;
  365. float    SVC_KILLEDMONSTER    = 27;
  366. float    SVC_FOUNDSECRET        = 28;
  367. float    SVC_INTERMISSION    = 30;
  368. float    SVC_FINALE            = 31;
  369. float    SVC_CDTRACK            = 32;
  370. float    SVC_SELLSCREEN        = 33;
  371.  
  372.  
  373. float    TE_SPIKE        = 0;
  374. float    TE_SUPERSPIKE    = 1;
  375. float    TE_GUNSHOT        = 2;
  376. float    TE_EXPLOSION    = 3;
  377. float    TE_TAREXPLOSION    = 4;
  378. float    TE_LIGHTNING1    = 5;
  379. float    TE_LIGHTNING2    = 6;
  380. float   TE_WIZSPIKE     = 7;
  381. float    TE_KNIGHTSPIKE    = 8;
  382. float    TE_LIGHTNING3    = 9;
  383. float    TE_LAVASPLASH    = 10;
  384. float   TE_TELEPORT     = 11;
  385.  
  386. // sound channels
  387. // channel 0 never willingly overrides
  388. // other channels (1-7) allways override a playing sound on that channel
  389. float    CHAN_AUTO        = 0;
  390. float    CHAN_WEAPON        = 1;
  391. float    CHAN_VOICE        = 2;
  392. float    CHAN_ITEM        = 3;
  393. float    CHAN_BODY        = 4;
  394.  
  395. float    ATTN_NONE        = 0;
  396. float    ATTN_NORM        = 1;
  397. float    ATTN_IDLE        = 2;
  398. float    ATTN_STATIC        = 3;
  399.  
  400. // update types
  401.  
  402. float    UPDATE_GENERAL    = 0;
  403. float    UPDATE_STATIC    = 1;
  404. float    UPDATE_BINARY    = 2;
  405. float    UPDATE_TEMP        = 3;
  406.  
  407. // entity effects
  408.  
  409. float    EF_BRIGHTFIELD    = 1;
  410. float    EF_MUZZLEFLASH     = 2;
  411. float    EF_BRIGHTLIGHT     = 4;
  412. float    EF_DIMLIGHT     = 8;
  413.  
  414.  
  415. // messages
  416. float    MSG_BROADCAST    = 0;        // unreliable to all
  417. float    MSG_ONE            = 1;        // reliable to one (msg_entity)
  418. float    MSG_ALL            = 2;        // reliable to all
  419. float    MSG_INIT        = 3;        // write to the init string
  420.  
  421. //================================================
  422.  
  423. //
  424. // globals
  425. //
  426. float    movedist;
  427. float    gameover;        // set when a rule exits
  428.  
  429. string    string_null;    // null string, nothing should be held here
  430. float    empty_float;
  431.  
  432. entity    newmis;            // launch_spike sets this after spawning it
  433.  
  434. entity    activator;        // the entity that activated a trigger or brush
  435.  
  436. entity    damage_attacker;    // set by T_Damage
  437. float    framecount;
  438.  
  439. float        skill;
  440.  
  441. //================================================
  442.  
  443. //
  444. // world fields (FIXME: make globals)
  445. //
  446. .string        wad;
  447. .string     map;
  448. .float        worldtype;    // 0=medieval 1=metal 2=base
  449.  
  450. //================================================
  451.  
  452. .string        killtarget;
  453.  
  454. //
  455. // quakeed fields
  456. //
  457. .float        light_lev;        // not used by game, but parsed by light util
  458. .float        style;
  459.  
  460.  
  461. //
  462. // monster ai
  463. //
  464. .void()        th_stand;
  465. .void()        th_walk;
  466. .void()        th_run;
  467. .void()        th_missile;
  468. .void()        th_melee;
  469. .void(entity attacker, float damage)        th_pain;
  470. .void()        th_die;
  471.  
  472. .entity        oldenemy;        // mad at this player before taking damage
  473.  
  474. .float        speed;
  475.  
  476. .float    lefty;
  477.  
  478. .float    search_time;
  479. .float    attack_state;
  480.  
  481. float    AS_STRAIGHT     = 1;
  482. float    AS_SLIDING      = 2;
  483. float    AS_MELEE        = 3;
  484. float    AS_MISSILE      = 4;
  485.  
  486. //
  487. // player only fields
  488. //
  489. .float        walkframe;
  490.  
  491. .float      InCommand;               // true if player is in an impulse command
  492. .float      NewPlayer;               // think counter till someone is initiated
  493.  
  494. .float      MoveBy;                  // Time that a player has to move by before being kicked for waiting
  495.  
  496. .float      InPassword;              // the number of numbers someone has entered in their password
  497. .float      PassTime;                // time at which someone will be kicked for not finishing password
  498.  
  499. .float      Kicking;                 // true if a person will be kicked by OpTime
  500. .float      OpTime;                  // time when person is kicked for not entering password
  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(string s) bprint                = #23;
  632. void(entity client, 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. void(vector o, vector d, float color, float count) particle = #48;// start a particle effect
  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. //
  675. // broadcast client message generation
  676. //
  677.  
  678. // void(float f) bWriteByte        = #59;
  679. // void(float f) bWriteChar        = #60;
  680. // void(float f) bWriteShort        = #61;
  681. // void(float f) bWriteLong        = #62;
  682. // void(float f) bWriteCoord        = #63;
  683. // void(float f) bWriteAngle        = #64;
  684. // void(string s) bWriteString    = #65;
  685. // void(entity e) bWriteEntity = #66;
  686.  
  687. void(float step) movetogoal                = #67;
  688.  
  689. string(string s) precache_file        = #68;    // no effect except for -copy
  690. void(entity e) makestatic        = #69;
  691. void(string s) changelevel = #70;
  692.  
  693. //#71 was removed
  694.  
  695. void(string var, string val) cvar_set = #72;    // sets cvar.value
  696.  
  697. void(entity client, string s) centerprint = #73;    // sprint, but in middle
  698.  
  699. void(vector pos, string samp, float vol, float atten) ambientsound = #74;
  700.  
  701. string(string s) precache_model2    = #75;        // registered version only
  702. string(string s) precache_sound2    = #76;        // registered version only
  703. string(string s) precache_file2        = #77;        // registered version only
  704.  
  705. void(entity e) setspawnparms        = #78;        // set parm1... to the
  706.                                                 // values at level start
  707.                                                 // for coop respawn
  708.  
  709. //============================================================================
  710.  
  711. //
  712. // subs.qc
  713. //
  714. void(vector tdest, float tspeed, void() func) SUB_CalcMove;
  715. void(entity ent, vector tdest, float tspeed, void() func) SUB_CalcMoveEnt;
  716. void(vector destangle, float tspeed, void() func) SUB_CalcAngleMove;
  717. void()  SUB_CalcMoveDone;
  718. void() SUB_CalcAngleMoveDone;
  719. void() SUB_Null;
  720. void() SUB_UseTargets;
  721. void() SUB_Remove;
  722.  
  723. //
  724. //    combat.qc
  725. //
  726. void(entity targ, entity inflictor, entity attacker, float damage) T_Damage;
  727.  
  728.  
  729. float (entity e, float healamount, float ignore) T_Heal; // health function
  730.  
  731. float(entity targ, entity inflictor) CanDamage;
  732.  
  733.  
  734.