|
|
1.1 ! root 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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.