home *** CD-ROM | disk | FTP | other *** search
/ Quake 'em / QUAKEEM.BIN / quake / programs / qplus11 / defs.qc < prev    next >
Encoding:
Text File  |  1996-08-22  |  18.0 KB  |  694 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. .float        button0;            // fire
  152. .float        button1;            // use
  153. .float        button2;            // jump
  154.  
  155. .float        impulse;            // weapon changes
  156.  
  157. .float        fixangle;
  158. .vector        v_angle;            // view / targeting angle for players
  159. .float        idealpitch;        // calculated pitch angle for lookup up slopes
  160.  
  161. .string        netname;
  162.  
  163. .entity         enemy;
  164.  
  165. .float        flags;
  166.  
  167. .float        colormap;
  168. .float        team;
  169.  
  170. .float        max_health;        // players maximum health is stored here
  171.  
  172. .float        teleport_time;        // don't back up
  173.  
  174. .float        armortype;        // save this fraction of incoming damage
  175. .float        armorvalue;
  176.  
  177. .float        waterlevel;        // 0 = not in, 1 = feet, 2 = wast, 3 = eyes
  178. .float        watertype;        // a contents value
  179.  
  180. .float        ideal_yaw;
  181. .float        yaw_speed;
  182.  
  183. .entity        aiment;
  184.  
  185. .entity         goalentity;        // a movetarget or an enemy
  186.  
  187. .float        spawnflags;
  188.  
  189. .string        target;
  190. .string        targetname;
  191.  
  192. // damage is accumulated through a frame. and sent as one single
  193. // message, so the super shotgun doesn't generate huge messages
  194.  
  195. .float        dmg_take;
  196. .float        dmg_save;
  197. .entity        dmg_inflictor;
  198.  
  199. .entity        owner;            // who launched a missile
  200. .vector        movedir;            // mostly for doors, but also used for waterjump
  201.  
  202. .string        message;        // trigger messages
  203.  
  204. .float        sounds;            // either a cd track number or sound number
  205.  
  206. .string        noise, noise1, noise2, noise3;    // contains names of wavs to play
  207.  
  208. //================================================
  209. void        end_sys_fields;        // flag for structure dumping
  210. //================================================
  211.  
  212. /*
  213. ==============================================================================
  214.  
  215.                 VARS NOT REFERENCED BY C CODE
  216.  
  217. ==============================================================================
  218. */
  219.  
  220. //
  221. // constants
  222. //
  223.  
  224. float    FALSE                    = 0;
  225. float     TRUE                    = 1;
  226.  
  227. // edict.flags
  228. float    FL_FLY                    = 1;
  229. float    FL_SWIM                = 2;
  230. float    FL_OBJECT                = 4;    //ws
  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
  241. float    FL_FRIENDLY                = 8192;    //ws
  242.  
  243. // edict.movetype values
  244. float    MOVETYPE_NONE            = 0;    // never moves
  245. //float    MOVETYPE_ANGLENOCLIP        = 1;
  246. //float    MOVETYPE_ANGLECLIP            = 2;
  247. float    MOVETYPE_WALK            = 3;    // players only
  248. float    MOVETYPE_STEP            = 4;    // discrete, not real time unless fall
  249. float    MOVETYPE_FLY                = 5;
  250. float    MOVETYPE_TOSS            = 6;    // gravity
  251. float    MOVETYPE_PUSH            = 7;    // no clip to world, push and crush
  252. float    MOVETYPE_NOCLIP            = 8;
  253. float    MOVETYPE_FLYMISSILE            = 9;    // fly with extra size against monsters
  254. float    MOVETYPE_BOUNCE            = 10;
  255. float    MOVETYPE_BOUNCEMISSILE        = 11;    // bounce with extra size
  256.  
  257. // edict.solid values
  258. float    SOLID_NOT                = 0;    // no interaction with other objects
  259. float    SOLID_TRIGGER                = 1;    // touch on edge, but not blocking
  260. float    SOLID_BBOX                = 2;    // touch on edge, block
  261. float    SOLID_SLIDEBOX            = 3;    // touch on edge, but not an onground
  262. float    SOLID_BSP                = 4;    // bsp clip, touch on edge, block
  263.  
  264. // range values
  265. float    RANGE_MELEE                = 0;
  266. float    RANGE_NEAR                = 1;
  267. float    RANGE_MID                = 2;
  268. float    RANGE_FAR                = 3;
  269.  
  270. // deadflag values
  271.  
  272. float    DEAD_NO                = 0;
  273. float    DEAD_DYING                = 1;
  274. float    DEAD_DEAD                = 2;
  275. float    DEAD_RESPAWNABLE            = 3;
  276.  
  277. // takedamage values
  278.  
  279. float    DAMAGE_NO                = 0;
  280. float    DAMAGE_YES                = 1;
  281. float    DAMAGE_AIM                = 2;
  282.  
  283. // items
  284. float    IT_AXE                    = 4096;
  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;
  293.  
  294. float    IT_SHELLS                = 256;
  295. float    IT_NAILS                = 512;
  296. float    IT_ROCKETS                = 1024;
  297. float    IT_CELLS                = 2048;
  298.  
  299. float    IT_ARMOR1                = 8192;
  300. float    IT_ARMOR2                = 16384;
  301. float    IT_ARMOR3                = 32768;
  302. float    IT_SUPERHEALTH            = 65536;
  303.  
  304. float    IT_KEY1                = 131072;
  305. float    IT_KEY2                = 262144;
  306.  
  307. float    IT_INVISIBILITY                = 524288;
  308. float    IT_INVULNERABILITY            = 1048576;
  309. float    IT_SUIT                    = 2097152;
  310. float    IT_QUAD                = 4194304;
  311.  
  312. // point content values
  313.  
  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;
  320.  
  321. float    STATE_TOP        = 0;
  322. float    STATE_BOTTOM    = 1;
  323. float    STATE_UP        = 2;
  324. float    STATE_DOWN        = 3;
  325.  
  326. vector    VEC_ORIGIN = '0 0 0';
  327. vector    VEC_HULL_MIN = '-16 -16 -24';
  328. vector    VEC_HULL_MAX = '16 16 32';
  329.  
  330. vector    VEC_HULL2_MIN = '-32 -32 -24';
  331. vector    VEC_HULL2_MAX = '32 32 64';
  332.  
  333. // protocol bytes
  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;
  341.  
  342.  
  343. float    TE_SPIKE        = 0;
  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;
  355.  
  356. // sound channels
  357. // channel 0 never willingly overrides
  358. // other channels (1-7) allways override a playing sound on that channel
  359.  
  360. float    CHAN_AUTO        = 0;
  361. float    CHAN_WEAPON    = 1;
  362. float    CHAN_VOICE        = 2;
  363. float    CHAN_ITEM        = 3;
  364. float    CHAN_BODY        = 4;
  365.  
  366. float    ATTN_NONE        = 0;
  367. float    ATTN_NORM        = 1;
  368. float    ATTN_IDLE        = 2;
  369. float    ATTN_STATIC        = 3;
  370.  
  371. // update types
  372.  
  373. float    UPDATE_GENERAL    = 0;
  374. float    UPDATE_STATIC    = 1;
  375. float    UPDATE_BINARY    = 2;
  376. float    UPDATE_TEMP        = 3;
  377.  
  378. // entity effects
  379.  
  380. float    EF_BRIGHTFIELD    = 1;
  381. float    EF_MUZZLEFLASH     = 2;
  382. float    EF_BRIGHTLIGHT     = 4;
  383. float    EF_DIMLIGHT         = 8;
  384.  
  385. // messages
  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
  390.  
  391. //================================================
  392.  
  393. //
  394. // globals
  395. //
  396. float    movedist;
  397. float    gameover;        // set when a rule exits
  398.  
  399. string    string_null;        // null string, nothing should be held here
  400. float    empty_float;
  401.  
  402. entity    newmis;            // launch_spike sets this after spawning it
  403.  
  404. entity    activator;        // the entity that activated a trigger or brush
  405.  
  406. entity    damage_attacker;        // set by T_Damage
  407. float    framecount;
  408.  
  409. float    skill;
  410.  
  411. //================================================
  412.  
  413. //
  414. // world fields (FIXME: make globals)
  415. //
  416. .string        wad;
  417. .string         map;
  418. .float        worldtype;    // 0=medieval 1=metal 2=base
  419.  
  420. //================================================
  421.  
  422. .string        killtarget;
  423.  
  424. //
  425. // quakeed fields
  426. //
  427. .float        light_lev;    // not used by game, but parsed by light util
  428. .float        style;
  429.  
  430.  
  431. //
  432. // monster ai
  433. //
  434. .void()        th_stand;
  435. .void()        th_walk;
  436. .void()        th_run;
  437. .void()        th_missile;
  438. .void()        th_melee;
  439. .void(entity attacker, float damage)    th_pain;
  440. .void()        th_die;
  441.  
  442. .entity        oldenemy;    // mad at this player before taking damage
  443.  
  444. .float        speed;
  445.  
  446. .float    lefty;
  447.  
  448. .float    search_time;
  449. .float    attack_state;
  450.  
  451. float    AS_STRAIGHT        = 1;
  452. float    AS_SLIDING        = 2;
  453. float    AS_MELEE        = 3;
  454. float    AS_MISSILE        = 4;
  455.  
  456. //
  457. // player only fields
  458. //
  459. .float        walkframe;
  460.  
  461. .float         attack_finished;
  462. .float        pain_finished;
  463.  
  464. .float        invincible_finished;
  465. .float        invisible_finished;
  466. .float        super_damage_finished;
  467. .float        radsuit_finished;
  468.  
  469. .float        invincible_time, invincible_sound;
  470. .float        invisible_time, invisible_sound;
  471. .float        super_time, super_sound;
  472. .float        rad_time;
  473. .float        fly_sound;
  474.  
  475. .float        axhitme;
  476.  
  477. .float        show_hostile;        // set to time+0.2 whenever a client fires a
  478.                     // weapon or takes damage.  Used to alert
  479.                     // monsters that otherwise would let the player go
  480. .float        jump_flag;        // player jump flag
  481. .float        swim_flag;        // player swimming sound flag
  482. .float        air_finished;        // when time > air_finished, start drowning
  483. .float        bubble_count;        // keeps track of the number of bubbles
  484. .string        deathtype;        // keeps track of how the player died
  485.  
  486. //
  487. // object stuff
  488. //
  489. .string        mdl;
  490. .vector        mangle;            // angle at start
  491.  
  492. .vector        oldorigin;        // only used by secret door
  493.  
  494. .float        t_length, t_width;
  495.  
  496. //
  497. // doors, etc
  498. //
  499. .vector        dest, dest1, dest2;
  500. .float        wait;            // time from firing to restarting
  501. .float        delay;            // time from activation to firing
  502. .entity        trigger_field;        // door's trigger entity
  503. .string        noise4;
  504.  
  505. //
  506. // monsters
  507. //
  508. .float         pausetime;
  509. .entity         movetarget;
  510.  
  511. //
  512. // doors
  513. //
  514. .float        aflag;
  515. .float        dmg;            // damage done by door when hit
  516.     
  517. //
  518. // misc
  519. //
  520. .float        cnt;             // misc flag
  521.     
  522. //
  523. // subs
  524. //
  525. .void()        think1;
  526. .vector        finaldest, finalangle;
  527.  
  528. //
  529. // triggers
  530. //
  531. .float        count;            // for counting triggers
  532.  
  533.  
  534. //
  535. // plats / doors / buttons
  536. //
  537. .float        lip;
  538. .float        state;
  539. .vector        pos1, pos2;        // top and bottom positions
  540. .float        height;
  541.  
  542. //
  543. // sounds
  544. //
  545. .float        waitmin, waitmax;
  546. .float        distance;
  547. .float        volume;
  548.  
  549. //===========================================================================
  550.     
  551. //
  552. // builtin functions
  553. //
  554.  
  555. void(vector ang)    makevectors        = #1;        // sets v_forward, etc globals
  556. void(entity e, vector o) setorigin        = #2;
  557. void(entity e, string m) setmodel        = #3;        // set movetype and solid first
  558. void(entity e, vector min, vector max) setsize = #4;
  559. // #5 was removed
  560. void() break                = #6;
  561. float() random                = #7;        // returns 0 - 1
  562. void(entity e, float chan, string samp, float vol, float atten) sound = #8;
  563. vector(vector v) normalize            = #9;
  564. void(string e) error            = #10;
  565. void(string e) objerror            = #11;
  566. float(vector v) vlen            = #12;
  567. float(vector v) vectoyaw            = #13;
  568. entity() spawn                = #14;
  569. void(entity e) remove            = #15;
  570.  
  571. // sets trace_* globals
  572. // nomonsters can be:
  573. // An entity will also be ignored for testing if forent == test,
  574. // forent->owner == test, or test->owner == forent
  575. // a forent of world is ignored
  576. void(vector v1, vector v2, float nomonsters, entity forent) traceline = #16;    
  577.  
  578. entity() checkclient            = #17;        // returns a client to look for
  579. entity(entity start, .string fld, string match) find = #18;
  580. string(string s) precache_sound        = #19;
  581. string(string s) precache_model        = #20;
  582. void(entity client, string s)stuffcmd         = #21;
  583. entity(vector org, float rad) findradius     = #22;
  584. void(string s) bprint            = #23;
  585. void(entity client, string s) sprint         = #24;
  586. void(string s) dprint            = #25;
  587. string(float f) ftos                = #26;
  588. string(vector v) vtos            = #27;
  589. void() coredump                = #28;        // prints all edicts
  590. void() traceon                = #29;        // turns statment trace on
  591. void() traceoff                = #30;
  592. void(entity e) eprint            = #31;        // prints an entire edict
  593. float(float yaw, float dist) walkmove        = #32;        // returns TRUE or FALSE
  594. // #33 was removed
  595. float(float yaw, float dist) droptofloor    = #34;        // TRUE if landed on floor
  596. void(float style, string value) lightstyle     = #35;
  597. float(float v) rint                = #36;        // round to nearest int
  598. float(float v) floor                = #37;        // largest integer <= v
  599. float(float v) ceil                = #38;        // smallest integer >= v
  600. // #39 was removed
  601. float(entity e) checkbottom        = #40;        // true if self is on ground
  602. float(vector v) pointcontents        = #41;        // returns a CONTENT_*
  603. // #42 was removed
  604. float(float f) fabs                 = #43;
  605. vector(entity e, float speed) aim         = #44;        // returns the shooting vector
  606. float(string s) cvar             = #45;        // return cvar.value
  607. void(string s) localcmd             = #46;        // put string into local que
  608. entity(entity e) nextent             = #47;        // for looping through all ents
  609. void(vector o, vector d, float color, float count) particle = #48;    // start a particle effect
  610. void() ChangeYaw             = #49;        // turn towards self.ideal_yaw
  611.                             // at self.yaw_speed
  612. // #50 was removed
  613. vector(vector v) vectoangles        = #51;
  614.  
  615. //
  616. // direct client message generation
  617. //
  618. void(float to, float f) WriteByte        = #52;
  619. void(float to, float f) WriteChar        = #53;
  620. void(float to, float f) WriteShort        = #54;
  621. void(float to, float f) WriteLong        = #55;
  622. void(float to, float f) WriteCoord        = #56;
  623. void(float to, float f) WriteAngle        = #57;
  624. void(float to, string s) WriteString        = #58;
  625. void(float to, entity s) WriteEntity        = #59;
  626.  
  627. //
  628. // broadcast client message generation
  629. //
  630.  
  631. // void(float f) bWriteByte            = #59;
  632. // void(float f) bWriteChar            = #60;
  633. // void(float f) bWriteShort            = #61;
  634. // void(float f) bWriteLong            = #62;
  635. // void(float f) bWriteCoord        = #63;
  636. // void(float f) bWriteAngle        = #64;
  637. // void(string s) bWriteString        = #65;
  638. // void(entity e) bWriteEntity         = #66;
  639.  
  640. void(float step) movetogoal        = #67;
  641.  
  642. string(string s) precache_file        = #68;        // no effect except for -copy
  643. void(entity e) makestatic            = #69;
  644. void(string s) changelevel             = #70;
  645.  
  646. //#71 was removed
  647.  
  648. void(string var, string val) cvar_set         = #72;        // sets cvar.value
  649.  
  650. void(entity client, string s) centerprint     = #73;        // sprint, but in middle
  651.  
  652. void(vector pos, string samp, float vol, float atten) ambientsound = #74;
  653.  
  654. string(string s) precache_model2        = #75;        // registered version only
  655. string(string s) precache_sound2        = #76;        // registered version only
  656. string(string s) precache_file2        = #77;        // registered version only
  657.  
  658. void(entity e) setspawnparms        = #78;        // set parm1... to the
  659.                             // values at level start
  660.                             // for coop respawn
  661.  
  662. //============================================================================
  663.  
  664. //
  665. // subs.qc
  666. //
  667. void(vector tdest, float tspeed, void() func) SUB_CalcMove;
  668. void(entity ent, vector tdest, float tspeed, void() func) SUB_CalcMoveEnt;
  669. void(vector destangle, float tspeed, void() func) SUB_CalcAngleMove;
  670. void()  SUB_CalcMoveDone;
  671. void() SUB_CalcAngleMoveDone;
  672. void() SUB_Null;
  673. void() SUB_UseTargets;
  674. void() SUB_Remove;
  675.  
  676. //
  677. //    combat.qc
  678. //
  679. void(entity targ, entity inflictor, entity attacker, float damage) T_Damage;
  680. float (entity e, float healamount, float ignore) T_Heal; // health function
  681. float(entity targ, entity inflictor) CanDamage;
  682.  
  683. .float it_flashlight_on;        //ws...
  684. .entity it_flashlight_entity;
  685. .float radar_on;
  686. .entity telebomb;
  687. .float suit_time;
  688. .float camo_time;
  689. .float holo_time;
  690. .float tele_time;
  691. .entity    friend;
  692. .entity     friendlist;
  693. .entity    listitem;            //...ws
  694.