Annotation of quake2/rogue/q_shared.h, revision 1.1

1.1     ! root        1:        
        !             2: // q_shared.h -- included first by ALL program modules
        !             3: 
        !             4: #ifdef _WIN32
        !             5: // unknown pragmas are SUPPOSED to be ignored, but....
        !             6: #pragma warning(disable : 4244)     // MIPS
        !             7: #pragma warning(disable : 4136)     // X86
        !             8: #pragma warning(disable : 4051)     // ALPHA
        !             9: 
        !            10: #pragma warning(disable : 4018)     // signed/unsigned mismatch
        !            11: #pragma warning(disable : 4305)                // truncation from const double to float
        !            12: 
        !            13: #endif
        !            14: 
        !            15: #include <assert.h>
        !            16: #include <math.h>
        !            17: #include <stdio.h>
        !            18: #include <stdarg.h>
        !            19: #include <string.h>
        !            20: #include <stdlib.h>
        !            21: #include <time.h>
        !            22: 
        !            23: #if (defined _M_IX86 || defined __i386__) && !defined C_ONLY && !defined __sun__
        !            24: #define id386  1
        !            25: #else
        !            26: #define id386  0
        !            27: #endif
        !            28: 
        !            29: #if defined _M_ALPHA && !defined C_ONLY
        !            30: #define idaxp  1
        !            31: #else
        !            32: #define idaxp  0
        !            33: #endif
        !            34: 
        !            35: typedef unsigned char          byte;
        !            36: typedef enum {false, true}     qboolean;
        !            37: 
        !            38: 
        !            39: #ifndef NULL
        !            40: #define NULL ((void *)0)
        !            41: #endif
        !            42: 
        !            43: 
        !            44: // angle indexes
        !            45: #define        PITCH                           0               // up / down
        !            46: #define        YAW                                     1               // left / right
        !            47: #define        ROLL                            2               // fall over
        !            48: 
        !            49: #define        MAX_STRING_CHARS        1024    // max length of a string passed to Cmd_TokenizeString
        !            50: #define        MAX_STRING_TOKENS       80              // max tokens resulting from Cmd_TokenizeString
        !            51: #define        MAX_TOKEN_CHARS         128             // max length of an individual token
        !            52: 
        !            53: #define        MAX_QPATH                       64              // max length of a quake game pathname
        !            54: #define        MAX_OSPATH                      128             // max length of a filesystem pathname
        !            55: 
        !            56: //
        !            57: // per-level limits
        !            58: //
        !            59: #define        MAX_CLIENTS                     256             // absolute limit
        !            60: #define        MAX_EDICTS                      1024    // must change protocol to increase more
        !            61: #define        MAX_LIGHTSTYLES         256
        !            62: #define        MAX_MODELS                      256             // these are sent over the net as bytes
        !            63: #define        MAX_SOUNDS                      256             // so they cannot be blindly increased
        !            64: #define        MAX_IMAGES                      256
        !            65: #define        MAX_ITEMS                       256
        !            66: #define MAX_GENERAL                    (MAX_CLIENTS*2) // general config strings
        !            67: 
        !            68: 
        !            69: // game print flags
        !            70: #define        PRINT_LOW                       0               // pickup messages
        !            71: #define        PRINT_MEDIUM            1               // death messages
        !            72: #define        PRINT_HIGH                      2               // critical messages
        !            73: #define        PRINT_CHAT                      3               // chat messages
        !            74: 
        !            75: 
        !            76: 
        !            77: #define        ERR_FATAL                       0               // exit the entire game with a popup window
        !            78: #define        ERR_DROP                        1               // print to console and disconnect from game
        !            79: #define        ERR_DISCONNECT          2               // don't kill server
        !            80: 
        !            81: #define        PRINT_ALL                       0
        !            82: #define PRINT_DEVELOPER                1               // only print when "developer 1"
        !            83: #define PRINT_ALERT                    2               
        !            84: 
        !            85: 
        !            86: // destination class for gi.multicast()
        !            87: typedef enum
        !            88: {
        !            89: MULTICAST_ALL,
        !            90: MULTICAST_PHS,
        !            91: MULTICAST_PVS,
        !            92: MULTICAST_ALL_R,
        !            93: MULTICAST_PHS_R,
        !            94: MULTICAST_PVS_R
        !            95: } multicast_t;
        !            96: 
        !            97: 
        !            98: /*
        !            99: ==============================================================
        !           100: 
        !           101: MATHLIB
        !           102: 
        !           103: ==============================================================
        !           104: */
        !           105: 
        !           106: typedef float vec_t;
        !           107: typedef vec_t vec3_t[3];
        !           108: typedef vec_t vec5_t[5];
        !           109: 
        !           110: typedef        int     fixed4_t;
        !           111: typedef        int     fixed8_t;
        !           112: typedef        int     fixed16_t;
        !           113: 
        !           114: #ifndef M_PI
        !           115: #define M_PI           3.14159265358979323846  // matches value in gcc v2 math.h
        !           116: #endif
        !           117: 
        !           118: struct cplane_s;
        !           119: 
        !           120: extern vec3_t vec3_origin;
        !           121: 
        !           122: #define        nanmask (255<<23)
        !           123: 
        !           124: #define        IS_NAN(x) (((*(int *)&x)&nanmask)==nanmask)
        !           125: 
        !           126: // microsoft's fabs seems to be ungodly slow...
        !           127: //float Q_fabs (float f);
        !           128: //#define      fabs(f) Q_fabs(f)
        !           129: #if !defined C_ONLY && !defined __linux__ && !defined __sgi
        !           130: extern long Q_ftol( float f );
        !           131: #else
        !           132: #define Q_ftol( f ) ( long ) (f)
        !           133: #endif
        !           134: 
        !           135: #define DotProduct(x,y)                        (x[0]*y[0]+x[1]*y[1]+x[2]*y[2])
        !           136: #define VectorSubtract(a,b,c)  (c[0]=a[0]-b[0],c[1]=a[1]-b[1],c[2]=a[2]-b[2])
        !           137: #define VectorAdd(a,b,c)               (c[0]=a[0]+b[0],c[1]=a[1]+b[1],c[2]=a[2]+b[2])
        !           138: #define VectorCopy(a,b)                        (b[0]=a[0],b[1]=a[1],b[2]=a[2])
        !           139: #define VectorClear(a)                 (a[0]=a[1]=a[2]=0)
        !           140: #define VectorNegate(a,b)              (b[0]=-a[0],b[1]=-a[1],b[2]=-a[2])
        !           141: #define VectorSet(v, x, y, z)  (v[0]=(x), v[1]=(y), v[2]=(z))
        !           142: 
        !           143: void VectorMA (vec3_t veca, float scale, vec3_t vecb, vec3_t vecc);
        !           144: 
        !           145: // just in case you do't want to use the macros
        !           146: vec_t _DotProduct (vec3_t v1, vec3_t v2);
        !           147: void _VectorSubtract (vec3_t veca, vec3_t vecb, vec3_t out);
        !           148: void _VectorAdd (vec3_t veca, vec3_t vecb, vec3_t out);
        !           149: void _VectorCopy (vec3_t in, vec3_t out);
        !           150: 
        !           151: void ClearBounds (vec3_t mins, vec3_t maxs);
        !           152: void AddPointToBounds (vec3_t v, vec3_t mins, vec3_t maxs);
        !           153: int VectorCompare (vec3_t v1, vec3_t v2);
        !           154: vec_t VectorLength (vec3_t v);
        !           155: void CrossProduct (vec3_t v1, vec3_t v2, vec3_t cross);
        !           156: vec_t VectorNormalize (vec3_t v);              // returns vector length
        !           157: vec_t VectorNormalize2 (vec3_t v, vec3_t out);
        !           158: void VectorInverse (vec3_t v);
        !           159: void VectorScale (vec3_t in, vec_t scale, vec3_t out);
        !           160: int Q_log2(int val);
        !           161: 
        !           162: void R_ConcatRotations (float in1[3][3], float in2[3][3], float out[3][3]);
        !           163: void R_ConcatTransforms (float in1[3][4], float in2[3][4], float out[3][4]);
        !           164: 
        !           165: void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up);
        !           166: int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *plane);
        !           167: float  anglemod(float a);
        !           168: float LerpAngle (float a1, float a2, float frac);
        !           169: 
        !           170: #define BOX_ON_PLANE_SIDE(emins, emaxs, p)     \
        !           171:        (((p)->type < 3)?                                               \
        !           172:        (                                                                               \
        !           173:                ((p)->dist <= (emins)[(p)->type])?      \
        !           174:                        1                                                               \
        !           175:                :                                                                       \
        !           176:                (                                                                       \
        !           177:                        ((p)->dist >= (emaxs)[(p)->type])?\
        !           178:                                2                                                       \
        !           179:                        :                                                               \
        !           180:                                3                                                       \
        !           181:                )                                                                       \
        !           182:        )                                                                               \
        !           183:        :                                                                               \
        !           184:                BoxOnPlaneSide( (emins), (emaxs), (p)))
        !           185: 
        !           186: void ProjectPointOnPlane( vec3_t dst, const vec3_t p, const vec3_t normal );
        !           187: void PerpendicularVector( vec3_t dst, const vec3_t src );
        !           188: void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, float degrees );
        !           189: 
        !           190: 
        !           191: //=============================================
        !           192: 
        !           193: char *COM_SkipPath (char *pathname);
        !           194: void COM_StripExtension (char *in, char *out);
        !           195: void COM_FileBase (char *in, char *out);
        !           196: void COM_FilePath (char *in, char *out);
        !           197: void COM_DefaultExtension (char *path, char *extension);
        !           198: 
        !           199: char *COM_Parse (char **data_p);
        !           200: // data is an in/out parm, returns a parsed out token
        !           201: 
        !           202: void Com_sprintf (char *dest, int size, char *fmt, ...);
        !           203: 
        !           204: void Com_PageInMemory (byte *buffer, int size);
        !           205: 
        !           206: //=============================================
        !           207: 
        !           208: // portable case insensitive compare
        !           209: int Q_stricmp (char *s1, char *s2);
        !           210: int Q_strcasecmp (char *s1, char *s2);
        !           211: int Q_strncasecmp (char *s1, char *s2, int n);
        !           212: 
        !           213: //=============================================
        !           214: 
        !           215: short  BigShort(short l);
        !           216: short  LittleShort(short l);
        !           217: int            BigLong (int l);
        !           218: int            LittleLong (int l);
        !           219: float  BigFloat (float l);
        !           220: float  LittleFloat (float l);
        !           221: 
        !           222: void   Swap_Init (void);
        !           223: char   *va(char *format, ...);
        !           224: 
        !           225: //=============================================
        !           226: 
        !           227: //
        !           228: // key / value info strings
        !           229: //
        !           230: #define        MAX_INFO_KEY            64
        !           231: #define        MAX_INFO_VALUE          64
        !           232: #define        MAX_INFO_STRING         512
        !           233: 
        !           234: char *Info_ValueForKey (char *s, char *key);
        !           235: void Info_RemoveKey (char *s, char *key);
        !           236: void Info_SetValueForKey (char *s, char *key, char *value);
        !           237: qboolean Info_Validate (char *s);
        !           238: 
        !           239: /*
        !           240: ==============================================================
        !           241: 
        !           242: SYSTEM SPECIFIC
        !           243: 
        !           244: ==============================================================
        !           245: */
        !           246: 
        !           247: extern int     curtime;                // time returned by last Sys_Milliseconds
        !           248: 
        !           249: int            Sys_Milliseconds (void);
        !           250: void   Sys_Mkdir (char *path);
        !           251: 
        !           252: // large block stack allocation routines
        !           253: void   *Hunk_Begin (int maxsize);
        !           254: void   *Hunk_Alloc (int size);
        !           255: void   Hunk_Free (void *buf);
        !           256: int            Hunk_End (void);
        !           257: 
        !           258: // directory searching
        !           259: #define SFF_ARCH    0x01
        !           260: #define SFF_HIDDEN  0x02
        !           261: #define SFF_RDONLY  0x04
        !           262: #define SFF_SUBDIR  0x08
        !           263: #define SFF_SYSTEM  0x10
        !           264: 
        !           265: /*
        !           266: ** pass in an attribute mask of things you wish to REJECT
        !           267: */
        !           268: char   *Sys_FindFirst (char *path, unsigned musthave, unsigned canthave );
        !           269: char   *Sys_FindNext ( unsigned musthave, unsigned canthave );
        !           270: void   Sys_FindClose (void);
        !           271: 
        !           272: 
        !           273: // this is only here so the functions in q_shared.c and q_shwin.c can link
        !           274: void Sys_Error (char *error, ...);
        !           275: void Com_Printf (char *msg, ...);
        !           276: 
        !           277: 
        !           278: /*
        !           279: ==========================================================
        !           280: 
        !           281: CVARS (console variables)
        !           282: 
        !           283: ==========================================================
        !           284: */
        !           285: 
        !           286: #ifndef CVAR
        !           287: #define        CVAR
        !           288: 
        !           289: #define        CVAR_ARCHIVE    1       // set to cause it to be saved to vars.rc
        !           290: #define        CVAR_USERINFO   2       // added to userinfo  when changed
        !           291: #define        CVAR_SERVERINFO 4       // added to serverinfo when changed
        !           292: #define        CVAR_NOSET              8       // don't allow change from console at all,
        !           293:                                                        // but can be set from the command line
        !           294: #define        CVAR_LATCH              16      // save changes until server restart
        !           295: 
        !           296: // nothing outside the Cvar_*() functions should modify these fields!
        !           297: typedef struct cvar_s
        !           298: {
        !           299:        char            *name;
        !           300:        char            *string;
        !           301:        char            *latched_string;        // for CVAR_LATCH vars
        !           302:        int                     flags;
        !           303:        qboolean        modified;       // set each time the cvar is changed
        !           304:        float           value;
        !           305:        struct cvar_s *next;
        !           306: } cvar_t;
        !           307: 
        !           308: #endif         // CVAR
        !           309: 
        !           310: /*
        !           311: ==============================================================
        !           312: 
        !           313: COLLISION DETECTION
        !           314: 
        !           315: ==============================================================
        !           316: */
        !           317: 
        !           318: // lower bits are stronger, and will eat weaker brushes completely
        !           319: #define        CONTENTS_SOLID                  1               // an eye is never valid in a solid
        !           320: #define        CONTENTS_WINDOW                 2               // translucent, but not watery
        !           321: #define        CONTENTS_AUX                    4
        !           322: #define        CONTENTS_LAVA                   8
        !           323: #define        CONTENTS_SLIME                  16
        !           324: #define        CONTENTS_WATER                  32
        !           325: #define        CONTENTS_MIST                   64
        !           326: #define        LAST_VISIBLE_CONTENTS   64
        !           327: 
        !           328: // remaining contents are non-visible, and don't eat brushes
        !           329: 
        !           330: #define        CONTENTS_AREAPORTAL             0x8000
        !           331: 
        !           332: #define        CONTENTS_PLAYERCLIP             0x10000
        !           333: #define        CONTENTS_MONSTERCLIP    0x20000
        !           334: 
        !           335: // currents can be added to any other contents, and may be mixed
        !           336: #define        CONTENTS_CURRENT_0              0x40000
        !           337: #define        CONTENTS_CURRENT_90             0x80000
        !           338: #define        CONTENTS_CURRENT_180    0x100000
        !           339: #define        CONTENTS_CURRENT_270    0x200000
        !           340: #define        CONTENTS_CURRENT_UP             0x400000
        !           341: #define        CONTENTS_CURRENT_DOWN   0x800000
        !           342: 
        !           343: #define        CONTENTS_ORIGIN                 0x1000000       // removed before bsping an entity
        !           344: 
        !           345: #define        CONTENTS_MONSTER                0x2000000       // should never be on a brush, only in game
        !           346: #define        CONTENTS_DEADMONSTER    0x4000000
        !           347: #define        CONTENTS_DETAIL                 0x8000000       // brushes to be added after vis leafs
        !           348: #define        CONTENTS_TRANSLUCENT    0x10000000      // auto set if any surface has trans
        !           349: #define        CONTENTS_LADDER                 0x20000000
        !           350: 
        !           351: 
        !           352: 
        !           353: #define        SURF_LIGHT              0x1             // value will hold the light strength
        !           354: 
        !           355: #define        SURF_SLICK              0x2             // effects game physics
        !           356: 
        !           357: #define        SURF_SKY                0x4             // don't draw, but add to skybox
        !           358: #define        SURF_WARP               0x8             // turbulent water warp
        !           359: #define        SURF_TRANS33    0x10
        !           360: #define        SURF_TRANS66    0x20
        !           361: #define        SURF_FLOWING    0x40    // scroll towards angle
        !           362: #define        SURF_NODRAW             0x80    // don't bother referencing the texture
        !           363: 
        !           364: 
        !           365: 
        !           366: // content masks
        !           367: #define        MASK_ALL                                (-1)
        !           368: #define        MASK_SOLID                              (CONTENTS_SOLID|CONTENTS_WINDOW)
        !           369: #define        MASK_PLAYERSOLID                (CONTENTS_SOLID|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER)
        !           370: #define        MASK_DEADSOLID                  (CONTENTS_SOLID|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW)
        !           371: #define        MASK_MONSTERSOLID               (CONTENTS_SOLID|CONTENTS_MONSTERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER)
        !           372: #define        MASK_WATER                              (CONTENTS_WATER|CONTENTS_LAVA|CONTENTS_SLIME)
        !           373: #define        MASK_OPAQUE                             (CONTENTS_SOLID|CONTENTS_SLIME|CONTENTS_LAVA)
        !           374: #define        MASK_SHOT                               (CONTENTS_SOLID|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEADMONSTER)
        !           375: #define MASK_CURRENT                   (CONTENTS_CURRENT_0|CONTENTS_CURRENT_90|CONTENTS_CURRENT_180|CONTENTS_CURRENT_270|CONTENTS_CURRENT_UP|CONTENTS_CURRENT_DOWN)
        !           376: 
        !           377: 
        !           378: // gi.BoxEdicts() can return a list of either solid or trigger entities
        !           379: // FIXME: eliminate AREA_ distinction?
        !           380: #define        AREA_SOLID              1
        !           381: #define        AREA_TRIGGERS   2
        !           382: 
        !           383: 
        !           384: // plane_t structure
        !           385: // !!! if this is changed, it must be changed in asm code too !!!
        !           386: typedef struct cplane_s
        !           387: {
        !           388:        vec3_t  normal;
        !           389:        float   dist;
        !           390:        byte    type;                   // for fast side tests
        !           391:        byte    signbits;               // signx + (signy<<1) + (signz<<1)
        !           392:        byte    pad[2];
        !           393: } cplane_t;
        !           394: 
        !           395: // structure offset for asm code
        !           396: #define CPLANE_NORMAL_X                        0
        !           397: #define CPLANE_NORMAL_Y                        4
        !           398: #define CPLANE_NORMAL_Z                        8
        !           399: #define CPLANE_DIST                            12
        !           400: #define CPLANE_TYPE                            16
        !           401: #define CPLANE_SIGNBITS                        17
        !           402: #define CPLANE_PAD0                            18
        !           403: #define CPLANE_PAD1                            19
        !           404: 
        !           405: typedef struct cmodel_s
        !           406: {
        !           407:        vec3_t          mins, maxs;
        !           408:        vec3_t          origin;         // for sounds or lights
        !           409:        int                     headnode;
        !           410: } cmodel_t;
        !           411: 
        !           412: typedef struct csurface_s
        !           413: {
        !           414:        char            name[16];
        !           415:        int                     flags;
        !           416:        int                     value;
        !           417: } csurface_t;
        !           418: 
        !           419: typedef struct mapsurface_s  // used internally due to name len probs //ZOID
        !           420: {
        !           421:        csurface_t      c;
        !           422:        char            rname[32];
        !           423: } mapsurface_t;
        !           424: 
        !           425: // a trace is returned when a box is swept through the world
        !           426: typedef struct
        !           427: {
        !           428:        qboolean        allsolid;       // if true, plane is not valid
        !           429:        qboolean        startsolid;     // if true, the initial point was in a solid area
        !           430:        float           fraction;       // time completed, 1.0 = didn't hit anything
        !           431:        vec3_t          endpos;         // final position
        !           432:        cplane_t        plane;          // surface normal at impact
        !           433:        csurface_t      *surface;       // surface hit
        !           434:        int                     contents;       // contents on other side of surface hit
        !           435:        struct edict_s  *ent;           // not set by CM_*() functions
        !           436: } trace_t;
        !           437: 
        !           438: 
        !           439: 
        !           440: // pmove_state_t is the information necessary for client side movement
        !           441: // prediction
        !           442: typedef enum 
        !           443: {
        !           444:        // can accelerate and turn
        !           445:        PM_NORMAL,
        !           446:        PM_SPECTATOR,
        !           447:        // no acceleration or turning
        !           448:        PM_DEAD,
        !           449:        PM_GIB,         // different bounding box
        !           450:        PM_FREEZE
        !           451: } pmtype_t;
        !           452: 
        !           453: // pmove->pm_flags
        !           454: #define        PMF_DUCKED                      1
        !           455: #define        PMF_JUMP_HELD           2
        !           456: #define        PMF_ON_GROUND           4
        !           457: #define        PMF_TIME_WATERJUMP      8       // pm_time is waterjump
        !           458: #define        PMF_TIME_LAND           16      // pm_time is time before rejump
        !           459: #define        PMF_TIME_TELEPORT       32      // pm_time is non-moving time
        !           460: #define PMF_NO_PREDICTION      64      // temporarily disables prediction (used for grappling hook)
        !           461: 
        !           462: // this structure needs to be communicated bit-accurate
        !           463: // from the server to the client to guarantee that
        !           464: // prediction stays in sync, so no floats are used.
        !           465: // if any part of the game code modifies this struct, it
        !           466: // will result in a prediction error of some degree.
        !           467: typedef struct
        !           468: {
        !           469:        pmtype_t        pm_type;
        !           470: 
        !           471:        short           origin[3];              // 12.3
        !           472:        short           velocity[3];    // 12.3
        !           473:        byte            pm_flags;               // ducked, jump_held, etc
        !           474:        byte            pm_time;                // each unit = 8 ms
        !           475:        short           gravity;
        !           476:        short           delta_angles[3];        // add to command angles to get view direction
        !           477:                                                                        // changed by spawns, rotating objects, and teleporters
        !           478: } pmove_state_t;
        !           479: 
        !           480: 
        !           481: //
        !           482: // button bits
        !           483: //
        !           484: #define        BUTTON_ATTACK           1
        !           485: #define        BUTTON_USE                      2
        !           486: #define        BUTTON_ANY                      128                     // any key whatsoever
        !           487: 
        !           488: 
        !           489: // usercmd_t is sent to the server each client frame
        !           490: typedef struct usercmd_s
        !           491: {
        !           492:        byte    msec;
        !           493:        byte    buttons;
        !           494:        short   angles[3];
        !           495:        short   forwardmove, sidemove, upmove;
        !           496:        byte    impulse;                // remove?
        !           497:        byte    lightlevel;             // light level the player is standing on
        !           498: } usercmd_t;
        !           499: 
        !           500: 
        !           501: #define        MAXTOUCH        32
        !           502: typedef struct
        !           503: {
        !           504:        // state (in / out)
        !           505:        pmove_state_t   s;
        !           506: 
        !           507:        // command (in)
        !           508:        usercmd_t               cmd;
        !           509:        qboolean                snapinitial;    // if s has been changed outside pmove
        !           510: 
        !           511:        // results (out)
        !           512:        int                     numtouch;
        !           513:        struct edict_s  *touchents[MAXTOUCH];
        !           514: 
        !           515:        vec3_t          viewangles;                     // clamped
        !           516:        float           viewheight;
        !           517: 
        !           518:        vec3_t          mins, maxs;                     // bounding box size
        !           519: 
        !           520:        struct edict_s  *groundentity;
        !           521:        int                     watertype;
        !           522:        int                     waterlevel;
        !           523: 
        !           524:        // callbacks to test the world
        !           525:        trace_t         (*trace) (vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end);
        !           526:        int                     (*pointcontents) (vec3_t point);
        !           527: } pmove_t;
        !           528: 
        !           529: 
        !           530: // entity_state_t->effects
        !           531: // Effects are things handled on the client side (lights, particles, frame animations)
        !           532: // that happen constantly on the given entity.
        !           533: // An entity that has effects will be sent to the client
        !           534: // even if it has a zero index model.
        !           535: #define        EF_ROTATE                       0x00000001              // rotate (bonus items)
        !           536: #define        EF_GIB                          0x00000002              // leave a trail
        !           537: #define        EF_BLASTER                      0x00000008              // redlight + trail
        !           538: #define        EF_ROCKET                       0x00000010              // redlight + trail
        !           539: #define        EF_GRENADE                      0x00000020
        !           540: #define        EF_HYPERBLASTER         0x00000040
        !           541: #define        EF_BFG                          0x00000080
        !           542: #define EF_COLOR_SHELL         0x00000100
        !           543: #define EF_POWERSCREEN         0x00000200
        !           544: #define        EF_ANIM01                       0x00000400              // automatically cycle between frames 0 and 1 at 2 hz
        !           545: #define        EF_ANIM23                       0x00000800              // automatically cycle between frames 2 and 3 at 2 hz
        !           546: #define EF_ANIM_ALL                    0x00001000              // automatically cycle through all frames at 2hz
        !           547: #define EF_ANIM_ALLFAST                0x00002000              // automatically cycle through all frames at 10hz
        !           548: #define        EF_FLIES                        0x00004000
        !           549: #define        EF_QUAD                         0x00008000
        !           550: #define        EF_PENT                         0x00010000
        !           551: #define        EF_TELEPORTER           0x00020000              // particle fountain
        !           552: #define EF_FLAG1                       0x00040000
        !           553: #define EF_FLAG2                       0x00080000
        !           554: // RAFAEL
        !           555: #define EF_IONRIPPER           0x00100000
        !           556: #define EF_GREENGIB                    0x00200000
        !           557: #define        EF_BLUEHYPERBLASTER 0x00400000
        !           558: #define EF_SPINNINGLIGHTS      0x00800000
        !           559: #define EF_PLASMA                      0x01000000
        !           560: #define EF_TRAP                                0x02000000
        !           561: 
        !           562: //ROGUE
        !           563: #define EF_TRACKER                     0x04000000
        !           564: #define        EF_DOUBLE                       0x08000000
        !           565: #define        EF_SPHERETRANS          0x10000000
        !           566: #define EF_TAGTRAIL                    0x20000000
        !           567: #define EF_HALF_DAMAGE         0x40000000
        !           568: #define EF_TRACKERTRAIL                0x80000000
        !           569: //ROGUE
        !           570: 
        !           571: // entity_state_t->renderfx flags
        !           572: #define        RF_MINLIGHT                     1               // allways have some light (viewmodel)
        !           573: #define        RF_VIEWERMODEL          2               // don't draw through eyes, only mirrors
        !           574: #define        RF_WEAPONMODEL          4               // only draw through eyes
        !           575: #define        RF_FULLBRIGHT           8               // allways draw full intensity
        !           576: #define        RF_DEPTHHACK            16              // for view weapon Z crunching
        !           577: #define        RF_TRANSLUCENT          32
        !           578: #define        RF_FRAMELERP            64
        !           579: #define RF_BEAM                                128
        !           580: #define        RF_CUSTOMSKIN           256             // skin is an index in image_precache
        !           581: #define        RF_GLOW                         512             // pulse lighting for bonus items
        !           582: #define RF_SHELL_RED           1024
        !           583: #define        RF_SHELL_GREEN          2048
        !           584: #define RF_SHELL_BLUE          4096
        !           585: 
        !           586: //ROGUE
        !           587: #define RF_IR_VISIBLE          0x00008000              // 32768
        !           588: #define        RF_SHELL_DOUBLE         0x00010000              // 65536
        !           589: #define        RF_SHELL_HALF_DAM       0x00020000
        !           590: #define RF_USE_DISGUISE                0x00040000
        !           591: //ROGUE
        !           592: 
        !           593: // player_state_t->refdef flags
        !           594: #define        RDF_UNDERWATER          1               // warp the screen as apropriate
        !           595: #define RDF_NOWORLDMODEL       2               // used for player configuration screen
        !           596: 
        !           597: //ROGUE
        !           598: #define        RDF_IRGOGGLES           4
        !           599: #define RDF_UVGOGGLES          8
        !           600: //ROGUE
        !           601: 
        !           602: //
        !           603: // muzzle flashes / player effects
        !           604: //
        !           605: #define        MZ_BLASTER                      0
        !           606: #define MZ_MACHINEGUN          1
        !           607: #define        MZ_SHOTGUN                      2
        !           608: #define        MZ_CHAINGUN1            3
        !           609: #define        MZ_CHAINGUN2            4
        !           610: #define        MZ_CHAINGUN3            5
        !           611: #define        MZ_RAILGUN                      6
        !           612: #define        MZ_ROCKET                       7
        !           613: #define        MZ_GRENADE                      8
        !           614: #define        MZ_LOGIN                        9
        !           615: #define        MZ_LOGOUT                       10
        !           616: #define        MZ_RESPAWN                      11
        !           617: #define        MZ_BFG                          12
        !           618: #define        MZ_SSHOTGUN                     13
        !           619: #define        MZ_HYPERBLASTER         14
        !           620: #define        MZ_ITEMRESPAWN          15
        !           621: // RAFAEL
        !           622: #define MZ_IONRIPPER           16
        !           623: #define MZ_BLUEHYPERBLASTER 17
        !           624: #define MZ_PHALANX                     18
        !           625: #define MZ_SILENCED                    128             // bit flag ORed with one of the above numbers
        !           626: 
        !           627: //ROGUE
        !           628: #define MZ_ETF_RIFLE           30
        !           629: #define MZ_UNUSED                      31
        !           630: #define MZ_SHOTGUN2                    32
        !           631: #define MZ_HEATBEAM                    33
        !           632: #define MZ_BLASTER2                    34
        !           633: #define        MZ_TRACKER                      35
        !           634: #define        MZ_NUKE1                        36
        !           635: #define        MZ_NUKE2                        37
        !           636: #define        MZ_NUKE4                        38
        !           637: #define        MZ_NUKE8                        39
        !           638: //ROGUE
        !           639: 
        !           640: //
        !           641: // monster muzzle flashes
        !           642: //
        !           643: #define MZ2_TANK_BLASTER_1                             1
        !           644: #define MZ2_TANK_BLASTER_2                             2
        !           645: #define MZ2_TANK_BLASTER_3                             3
        !           646: #define MZ2_TANK_MACHINEGUN_1                  4
        !           647: #define MZ2_TANK_MACHINEGUN_2                  5
        !           648: #define MZ2_TANK_MACHINEGUN_3                  6
        !           649: #define MZ2_TANK_MACHINEGUN_4                  7
        !           650: #define MZ2_TANK_MACHINEGUN_5                  8
        !           651: #define MZ2_TANK_MACHINEGUN_6                  9
        !           652: #define MZ2_TANK_MACHINEGUN_7                  10
        !           653: #define MZ2_TANK_MACHINEGUN_8                  11
        !           654: #define MZ2_TANK_MACHINEGUN_9                  12
        !           655: #define MZ2_TANK_MACHINEGUN_10                 13
        !           656: #define MZ2_TANK_MACHINEGUN_11                 14
        !           657: #define MZ2_TANK_MACHINEGUN_12                 15
        !           658: #define MZ2_TANK_MACHINEGUN_13                 16
        !           659: #define MZ2_TANK_MACHINEGUN_14                 17
        !           660: #define MZ2_TANK_MACHINEGUN_15                 18
        !           661: #define MZ2_TANK_MACHINEGUN_16                 19
        !           662: #define MZ2_TANK_MACHINEGUN_17                 20
        !           663: #define MZ2_TANK_MACHINEGUN_18                 21
        !           664: #define MZ2_TANK_MACHINEGUN_19                 22
        !           665: #define MZ2_TANK_ROCKET_1                              23
        !           666: #define MZ2_TANK_ROCKET_2                              24
        !           667: #define MZ2_TANK_ROCKET_3                              25
        !           668: 
        !           669: #define MZ2_INFANTRY_MACHINEGUN_1              26
        !           670: #define MZ2_INFANTRY_MACHINEGUN_2              27
        !           671: #define MZ2_INFANTRY_MACHINEGUN_3              28
        !           672: #define MZ2_INFANTRY_MACHINEGUN_4              29
        !           673: #define MZ2_INFANTRY_MACHINEGUN_5              30
        !           674: #define MZ2_INFANTRY_MACHINEGUN_6              31
        !           675: #define MZ2_INFANTRY_MACHINEGUN_7              32
        !           676: #define MZ2_INFANTRY_MACHINEGUN_8              33
        !           677: #define MZ2_INFANTRY_MACHINEGUN_9              34
        !           678: #define MZ2_INFANTRY_MACHINEGUN_10             35
        !           679: #define MZ2_INFANTRY_MACHINEGUN_11             36
        !           680: #define MZ2_INFANTRY_MACHINEGUN_12             37
        !           681: #define MZ2_INFANTRY_MACHINEGUN_13             38
        !           682: 
        !           683: #define MZ2_SOLDIER_BLASTER_1                  39
        !           684: #define MZ2_SOLDIER_BLASTER_2                  40
        !           685: #define MZ2_SOLDIER_SHOTGUN_1                  41
        !           686: #define MZ2_SOLDIER_SHOTGUN_2                  42
        !           687: #define MZ2_SOLDIER_MACHINEGUN_1               43
        !           688: #define MZ2_SOLDIER_MACHINEGUN_2               44
        !           689: 
        !           690: #define MZ2_GUNNER_MACHINEGUN_1                        45
        !           691: #define MZ2_GUNNER_MACHINEGUN_2                        46
        !           692: #define MZ2_GUNNER_MACHINEGUN_3                        47
        !           693: #define MZ2_GUNNER_MACHINEGUN_4                        48
        !           694: #define MZ2_GUNNER_MACHINEGUN_5                        49
        !           695: #define MZ2_GUNNER_MACHINEGUN_6                        50
        !           696: #define MZ2_GUNNER_MACHINEGUN_7                        51
        !           697: #define MZ2_GUNNER_MACHINEGUN_8                        52
        !           698: #define MZ2_GUNNER_GRENADE_1                   53
        !           699: #define MZ2_GUNNER_GRENADE_2                   54
        !           700: #define MZ2_GUNNER_GRENADE_3                   55
        !           701: #define MZ2_GUNNER_GRENADE_4                   56
        !           702: 
        !           703: #define MZ2_CHICK_ROCKET_1                             57
        !           704: 
        !           705: #define MZ2_FLYER_BLASTER_1                            58
        !           706: #define MZ2_FLYER_BLASTER_2                            59
        !           707: 
        !           708: #define MZ2_MEDIC_BLASTER_1                            60
        !           709: 
        !           710: #define MZ2_GLADIATOR_RAILGUN_1                        61
        !           711: 
        !           712: #define MZ2_HOVER_BLASTER_1                            62
        !           713: 
        !           714: #define MZ2_ACTOR_MACHINEGUN_1                 63
        !           715: 
        !           716: #define MZ2_SUPERTANK_MACHINEGUN_1             64
        !           717: #define MZ2_SUPERTANK_MACHINEGUN_2             65
        !           718: #define MZ2_SUPERTANK_MACHINEGUN_3             66
        !           719: #define MZ2_SUPERTANK_MACHINEGUN_4             67
        !           720: #define MZ2_SUPERTANK_MACHINEGUN_5             68
        !           721: #define MZ2_SUPERTANK_MACHINEGUN_6             69
        !           722: #define MZ2_SUPERTANK_ROCKET_1                 70
        !           723: #define MZ2_SUPERTANK_ROCKET_2                 71
        !           724: #define MZ2_SUPERTANK_ROCKET_3                 72
        !           725: 
        !           726: #define MZ2_BOSS2_MACHINEGUN_L1                        73
        !           727: #define MZ2_BOSS2_MACHINEGUN_L2                        74
        !           728: #define MZ2_BOSS2_MACHINEGUN_L3                        75
        !           729: #define MZ2_BOSS2_MACHINEGUN_L4                        76
        !           730: #define MZ2_BOSS2_MACHINEGUN_L5                        77
        !           731: #define MZ2_BOSS2_ROCKET_1                             78
        !           732: #define MZ2_BOSS2_ROCKET_2                             79
        !           733: #define MZ2_BOSS2_ROCKET_3                             80
        !           734: #define MZ2_BOSS2_ROCKET_4                             81
        !           735: 
        !           736: #define MZ2_FLOAT_BLASTER_1                            82
        !           737: 
        !           738: #define MZ2_SOLDIER_BLASTER_3                  83
        !           739: #define MZ2_SOLDIER_SHOTGUN_3                  84
        !           740: #define MZ2_SOLDIER_MACHINEGUN_3               85
        !           741: #define MZ2_SOLDIER_BLASTER_4                  86
        !           742: #define MZ2_SOLDIER_SHOTGUN_4                  87
        !           743: #define MZ2_SOLDIER_MACHINEGUN_4               88
        !           744: #define MZ2_SOLDIER_BLASTER_5                  89
        !           745: #define MZ2_SOLDIER_SHOTGUN_5                  90
        !           746: #define MZ2_SOLDIER_MACHINEGUN_5               91
        !           747: #define MZ2_SOLDIER_BLASTER_6                  92
        !           748: #define MZ2_SOLDIER_SHOTGUN_6                  93
        !           749: #define MZ2_SOLDIER_MACHINEGUN_6               94
        !           750: #define MZ2_SOLDIER_BLASTER_7                  95
        !           751: #define MZ2_SOLDIER_SHOTGUN_7                  96
        !           752: #define MZ2_SOLDIER_MACHINEGUN_7               97
        !           753: #define MZ2_SOLDIER_BLASTER_8                  98
        !           754: #define MZ2_SOLDIER_SHOTGUN_8                  99
        !           755: #define MZ2_SOLDIER_MACHINEGUN_8               100
        !           756: 
        !           757: // --- Xian shit below ---
        !           758: #define        MZ2_MAKRON_BFG                                  101
        !           759: #define MZ2_MAKRON_BLASTER_1                   102
        !           760: #define MZ2_MAKRON_BLASTER_2                   103
        !           761: #define MZ2_MAKRON_BLASTER_3                   104
        !           762: #define MZ2_MAKRON_BLASTER_4                   105
        !           763: #define MZ2_MAKRON_BLASTER_5                   106
        !           764: #define MZ2_MAKRON_BLASTER_6                   107
        !           765: #define MZ2_MAKRON_BLASTER_7                   108
        !           766: #define MZ2_MAKRON_BLASTER_8                   109
        !           767: #define MZ2_MAKRON_BLASTER_9                   110
        !           768: #define MZ2_MAKRON_BLASTER_10                  111
        !           769: #define MZ2_MAKRON_BLASTER_11                  112
        !           770: #define MZ2_MAKRON_BLASTER_12                  113
        !           771: #define MZ2_MAKRON_BLASTER_13                  114
        !           772: #define MZ2_MAKRON_BLASTER_14                  115
        !           773: #define MZ2_MAKRON_BLASTER_15                  116
        !           774: #define MZ2_MAKRON_BLASTER_16                  117
        !           775: #define MZ2_MAKRON_BLASTER_17                  118
        !           776: #define MZ2_MAKRON_RAILGUN_1                   119
        !           777: #define        MZ2_JORG_MACHINEGUN_L1                  120
        !           778: #define        MZ2_JORG_MACHINEGUN_L2                  121
        !           779: #define        MZ2_JORG_MACHINEGUN_L3                  122
        !           780: #define        MZ2_JORG_MACHINEGUN_L4                  123
        !           781: #define        MZ2_JORG_MACHINEGUN_L5                  124
        !           782: #define        MZ2_JORG_MACHINEGUN_L6                  125
        !           783: #define        MZ2_JORG_MACHINEGUN_R1                  126
        !           784: #define        MZ2_JORG_MACHINEGUN_R2                  127
        !           785: #define        MZ2_JORG_MACHINEGUN_R3                  128
        !           786: #define        MZ2_JORG_MACHINEGUN_R4                  129
        !           787: #define MZ2_JORG_MACHINEGUN_R5                 130
        !           788: #define        MZ2_JORG_MACHINEGUN_R6                  131
        !           789: #define MZ2_JORG_BFG_1                                 132
        !           790: #define MZ2_BOSS2_MACHINEGUN_R1                        133
        !           791: #define MZ2_BOSS2_MACHINEGUN_R2                        134
        !           792: #define MZ2_BOSS2_MACHINEGUN_R3                        135
        !           793: #define MZ2_BOSS2_MACHINEGUN_R4                        136
        !           794: #define MZ2_BOSS2_MACHINEGUN_R5                        137
        !           795: 
        !           796: //ROGUE
        !           797: #define        MZ2_CARRIER_MACHINEGUN_L1               138
        !           798: #define        MZ2_CARRIER_MACHINEGUN_R1               139
        !           799: #define        MZ2_CARRIER_GRENADE                             140
        !           800: #define MZ2_TURRET_MACHINEGUN                  141
        !           801: #define MZ2_TURRET_ROCKET                              142
        !           802: #define MZ2_TURRET_BLASTER                             143
        !           803: #define MZ2_STALKER_BLASTER                            144
        !           804: #define MZ2_DAEDALUS_BLASTER                   145
        !           805: #define MZ2_MEDIC_BLASTER_2                            146
        !           806: #define        MZ2_CARRIER_RAILGUN                             147
        !           807: #define        MZ2_WIDOW_DISRUPTOR                             148
        !           808: #define        MZ2_WIDOW_BLASTER                               149
        !           809: #define        MZ2_WIDOW_RAIL                                  150
        !           810: #define        MZ2_WIDOW_PLASMABEAM                    151             // PMM - not used
        !           811: #define        MZ2_CARRIER_MACHINEGUN_L2               152
        !           812: #define        MZ2_CARRIER_MACHINEGUN_R2               153
        !           813: #define        MZ2_WIDOW_RAIL_LEFT                             154
        !           814: #define        MZ2_WIDOW_RAIL_RIGHT                    155
        !           815: #define        MZ2_WIDOW_BLASTER_SWEEP1                156
        !           816: #define        MZ2_WIDOW_BLASTER_SWEEP2                157
        !           817: #define        MZ2_WIDOW_BLASTER_SWEEP3                158
        !           818: #define        MZ2_WIDOW_BLASTER_SWEEP4                159
        !           819: #define        MZ2_WIDOW_BLASTER_SWEEP5                160
        !           820: #define        MZ2_WIDOW_BLASTER_SWEEP6                161
        !           821: #define        MZ2_WIDOW_BLASTER_SWEEP7                162
        !           822: #define        MZ2_WIDOW_BLASTER_SWEEP8                163
        !           823: #define        MZ2_WIDOW_BLASTER_SWEEP9                164
        !           824: #define        MZ2_WIDOW_BLASTER_100                   165
        !           825: #define        MZ2_WIDOW_BLASTER_90                    166
        !           826: #define        MZ2_WIDOW_BLASTER_80                    167
        !           827: #define        MZ2_WIDOW_BLASTER_70                    168
        !           828: #define        MZ2_WIDOW_BLASTER_60                    169
        !           829: #define        MZ2_WIDOW_BLASTER_50                    170
        !           830: #define        MZ2_WIDOW_BLASTER_40                    171
        !           831: #define        MZ2_WIDOW_BLASTER_30                    172
        !           832: #define        MZ2_WIDOW_BLASTER_20                    173
        !           833: #define        MZ2_WIDOW_BLASTER_10                    174
        !           834: #define        MZ2_WIDOW_BLASTER_0                             175
        !           835: #define        MZ2_WIDOW_BLASTER_10L                   176
        !           836: #define        MZ2_WIDOW_BLASTER_20L                   177
        !           837: #define        MZ2_WIDOW_BLASTER_30L                   178
        !           838: #define        MZ2_WIDOW_BLASTER_40L                   179
        !           839: #define        MZ2_WIDOW_BLASTER_50L                   180
        !           840: #define        MZ2_WIDOW_BLASTER_60L                   181
        !           841: #define        MZ2_WIDOW_BLASTER_70L                   182
        !           842: #define        MZ2_WIDOW_RUN_1                                 183
        !           843: #define        MZ2_WIDOW_RUN_2                                 184
        !           844: #define        MZ2_WIDOW_RUN_3                                 185
        !           845: #define        MZ2_WIDOW_RUN_4                                 186
        !           846: #define        MZ2_WIDOW_RUN_5                                 187
        !           847: #define        MZ2_WIDOW_RUN_6                                 188
        !           848: #define        MZ2_WIDOW_RUN_7                                 189
        !           849: #define        MZ2_WIDOW_RUN_8                                 190
        !           850: #define        MZ2_CARRIER_ROCKET_1                    191
        !           851: #define        MZ2_CARRIER_ROCKET_2                    192
        !           852: #define        MZ2_CARRIER_ROCKET_3                    193
        !           853: #define        MZ2_CARRIER_ROCKET_4                    194
        !           854: #define        MZ2_WIDOW2_BEAMER_1                             195
        !           855: #define        MZ2_WIDOW2_BEAMER_2                             196
        !           856: #define        MZ2_WIDOW2_BEAMER_3                             197
        !           857: #define        MZ2_WIDOW2_BEAMER_4                             198
        !           858: #define        MZ2_WIDOW2_BEAMER_5                             199
        !           859: #define        MZ2_WIDOW2_BEAM_SWEEP_1                 200
        !           860: #define        MZ2_WIDOW2_BEAM_SWEEP_2                 201
        !           861: #define        MZ2_WIDOW2_BEAM_SWEEP_3                 202
        !           862: #define        MZ2_WIDOW2_BEAM_SWEEP_4                 203
        !           863: #define        MZ2_WIDOW2_BEAM_SWEEP_5                 204
        !           864: #define        MZ2_WIDOW2_BEAM_SWEEP_6                 205
        !           865: #define        MZ2_WIDOW2_BEAM_SWEEP_7                 206
        !           866: #define        MZ2_WIDOW2_BEAM_SWEEP_8                 207
        !           867: #define        MZ2_WIDOW2_BEAM_SWEEP_9                 208
        !           868: #define        MZ2_WIDOW2_BEAM_SWEEP_10                209
        !           869: #define        MZ2_WIDOW2_BEAM_SWEEP_11                210
        !           870: 
        !           871: // ROGUE
        !           872: 
        !           873: extern vec3_t monster_flash_offset [];
        !           874: 
        !           875: 
        !           876: // temp entity events
        !           877: //
        !           878: // Temp entity events are for things that happen
        !           879: // at a location seperate from any existing entity.
        !           880: // Temporary entity messages are explicitly constructed
        !           881: // and broadcast.
        !           882: typedef enum
        !           883: {
        !           884:        TE_GUNSHOT,
        !           885:        TE_BLOOD,
        !           886:        TE_BLASTER,
        !           887:        TE_RAILTRAIL,
        !           888:        TE_SHOTGUN,
        !           889:        TE_EXPLOSION1,
        !           890:        TE_EXPLOSION2,
        !           891:        TE_ROCKET_EXPLOSION,
        !           892:        TE_GRENADE_EXPLOSION,
        !           893:        TE_SPARKS,
        !           894:        TE_SPLASH,
        !           895:        TE_BUBBLETRAIL,
        !           896:        TE_SCREEN_SPARKS,
        !           897:        TE_SHIELD_SPARKS,
        !           898:        TE_BULLET_SPARKS,
        !           899:        TE_LASER_SPARKS,
        !           900:        TE_PARASITE_ATTACK,
        !           901:        TE_ROCKET_EXPLOSION_WATER,
        !           902:        TE_GRENADE_EXPLOSION_WATER,
        !           903:        TE_MEDIC_CABLE_ATTACK,
        !           904:        TE_BFG_EXPLOSION,
        !           905:        TE_BFG_BIGEXPLOSION,
        !           906:        TE_BOSSTPORT,                   // used as '22' in a map, so DON'T RENUMBER!!!
        !           907:        TE_BFG_LASER,
        !           908:        TE_GRAPPLE_CABLE,
        !           909:        TE_WELDING_SPARKS,
        !           910:        TE_GREENBLOOD,
        !           911:        TE_BLUEHYPERBLASTER,
        !           912:        TE_PLASMA_EXPLOSION,
        !           913:        TE_TUNNEL_SPARKS,
        !           914: //ROGUE
        !           915:        TE_BLASTER2,
        !           916:        TE_RAILTRAIL2,
        !           917:        TE_FLAME,
        !           918:        TE_LIGHTNING,
        !           919:        TE_DEBUGTRAIL,
        !           920:        TE_PLAIN_EXPLOSION,
        !           921:        TE_FLASHLIGHT,
        !           922:        TE_FORCEWALL,
        !           923:        TE_HEATBEAM,
        !           924:        TE_MONSTER_HEATBEAM,
        !           925:        TE_STEAM,
        !           926:        TE_BUBBLETRAIL2,
        !           927:        TE_MOREBLOOD,
        !           928:        TE_HEATBEAM_SPARKS,
        !           929:        TE_HEATBEAM_STEAM,
        !           930:        TE_CHAINFIST_SMOKE,
        !           931:        TE_ELECTRIC_SPARKS,
        !           932:        TE_TRACKER_EXPLOSION,
        !           933:        TE_TELEPORT_EFFECT,
        !           934:        TE_DBALL_GOAL,
        !           935:        TE_WIDOWBEAMOUT,
        !           936:        TE_NUKEBLAST,
        !           937:        TE_WIDOWSPLASH,
        !           938:        TE_EXPLOSION1_BIG,
        !           939:        TE_EXPLOSION1_NP,
        !           940:        TE_FLECHETTE
        !           941: //ROGUE
        !           942: } temp_event_t;
        !           943: 
        !           944: #define SPLASH_UNKNOWN         0
        !           945: #define SPLASH_SPARKS          1
        !           946: #define SPLASH_BLUE_WATER      2
        !           947: #define SPLASH_BROWN_WATER     3
        !           948: #define SPLASH_SLIME           4
        !           949: #define        SPLASH_LAVA                     5
        !           950: #define SPLASH_BLOOD           6
        !           951: 
        !           952: 
        !           953: // sound channels
        !           954: // channel 0 never willingly overrides
        !           955: // other channels (1-7) allways override a playing sound on that channel
        !           956: #define        CHAN_AUTO               0
        !           957: #define        CHAN_WEAPON             1
        !           958: #define        CHAN_VOICE              2
        !           959: #define        CHAN_ITEM               3
        !           960: #define        CHAN_BODY               4
        !           961: // modifier flags
        !           962: #define        CHAN_NO_PHS_ADD                 8       // send to all clients, not just ones in PHS (ATTN 0 will also do this)
        !           963: #define        CHAN_RELIABLE                   16      // send by reliable message, not datagram
        !           964: 
        !           965: 
        !           966: // sound attenuation values
        !           967: #define        ATTN_NONE               0       // full volume the entire level
        !           968: #define        ATTN_NORM               1
        !           969: #define        ATTN_IDLE               2
        !           970: #define        ATTN_STATIC             3       // diminish very rapidly with distance
        !           971: 
        !           972: 
        !           973: // player_state->stats[] indexes
        !           974: #define STAT_HEALTH_ICON               0
        !           975: #define        STAT_HEALTH                             1
        !           976: #define        STAT_AMMO_ICON                  2
        !           977: #define        STAT_AMMO                               3
        !           978: #define        STAT_ARMOR_ICON                 4
        !           979: #define        STAT_ARMOR                              5
        !           980: #define        STAT_SELECTED_ICON              6
        !           981: #define        STAT_PICKUP_ICON                7
        !           982: #define        STAT_PICKUP_STRING              8
        !           983: #define        STAT_TIMER_ICON                 9
        !           984: #define        STAT_TIMER                              10
        !           985: #define        STAT_HELPICON                   11
        !           986: #define        STAT_SELECTED_ITEM              12
        !           987: #define        STAT_LAYOUTS                    13
        !           988: #define        STAT_FRAGS                              14
        !           989: #define        STAT_FLASHES                    15              // cleared each frame, 1 = health, 2 = armor
        !           990: #define STAT_CHASE                             16
        !           991: #define STAT_SPECTATOR                 17
        !           992: 
        !           993: #define        MAX_STATS                               32
        !           994: 
        !           995: 
        !           996: // dmflags->value flags
        !           997: #define        DF_NO_HEALTH            0x00000001      // 1
        !           998: #define        DF_NO_ITEMS                     0x00000002      // 2
        !           999: #define        DF_WEAPONS_STAY         0x00000004      // 4
        !          1000: #define        DF_NO_FALLING           0x00000008      // 8
        !          1001: #define        DF_INSTANT_ITEMS        0x00000010      // 16
        !          1002: #define        DF_SAME_LEVEL           0x00000020      // 32
        !          1003: #define DF_SKINTEAMS           0x00000040      // 64
        !          1004: #define DF_MODELTEAMS          0x00000080      // 128
        !          1005: #define DF_NO_FRIENDLY_FIRE    0x00000100      // 256
        !          1006: #define        DF_SPAWN_FARTHEST       0x00000200      // 512
        !          1007: #define DF_FORCE_RESPAWN       0x00000400      // 1024
        !          1008: #define DF_NO_ARMOR                    0x00000800      // 2048
        !          1009: #define DF_ALLOW_EXIT          0x00001000      // 4096
        !          1010: #define DF_INFINITE_AMMO       0x00002000      // 8192
        !          1011: #define DF_QUAD_DROP           0x00004000      // 16384
        !          1012: #define DF_FIXED_FOV           0x00008000      // 32768
        !          1013: 
        !          1014: // RAFAEL
        !          1015: #define        DF_QUADFIRE_DROP        0x00010000      // 65536
        !          1016: 
        !          1017: //ROGUE
        !          1018: #define DF_NO_MINES                    0x00020000
        !          1019: #define DF_NO_STACK_DOUBLE     0x00040000
        !          1020: #define DF_NO_NUKES                    0x00080000
        !          1021: #define DF_NO_SPHERES          0x00100000
        !          1022: //ROGUE
        !          1023: 
        !          1024: /*
        !          1025: ROGUE - VERSIONS
        !          1026: 1234   08/13/1998              Activision
        !          1027: 1235   08/14/1998              Id Software
        !          1028: 1236   08/15/1998              Steve Tietze
        !          1029: 1237   08/15/1998              Phil Dobranski
        !          1030: 1238   08/15/1998              John Sheley
        !          1031: 1239   08/17/1998              Barrett Alexander
        !          1032: 1230   08/17/1998              Brandon Fish
        !          1033: 1245   08/17/1998              Don MacAskill
        !          1034: 1246   08/17/1998              David "Zoid" Kirsch
        !          1035: 1247   08/17/1998              Manu Smith
        !          1036: 1248   08/17/1998              Geoff Scully
        !          1037: 1249   08/17/1998              Andy Van Fossen
        !          1038: 1240   08/20/1998              Activision Build 2
        !          1039: 1256   08/20/1998              Ranger Clan
        !          1040: 1257   08/20/1998              Ensemble Studios
        !          1041: 1258   08/21/1998              Robert Duffy
        !          1042: 1259   08/21/1998              Stephen Seachord
        !          1043: 1250   08/21/1998              Stephen Heaslip
        !          1044: 1267   08/21/1998              Samir Sandesara
        !          1045: 1268   08/21/1998              Oliver Wyman
        !          1046: 1269   08/21/1998              Steven Marchegiano
        !          1047: 1260   08/21/1998              Build #2 for Nihilistic
        !          1048: 1278   08/21/1998              Build #2 for Ensemble
        !          1049: 
        !          1050: 9999   08/20/1998              Internal Use
        !          1051: */
        !          1052: #define ROGUE_VERSION_ID               1278
        !          1053: 
        !          1054: #define ROGUE_VERSION_STRING   "08/21/1998 Beta 2 for Ensemble"
        !          1055: 
        !          1056: // ROGUE
        !          1057: /*
        !          1058: ==========================================================
        !          1059: 
        !          1060:   ELEMENTS COMMUNICATED ACROSS THE NET
        !          1061: 
        !          1062: ==========================================================
        !          1063: */
        !          1064: 
        !          1065: #define        ANGLE2SHORT(x)  ((int)((x)*65536/360) & 65535)
        !          1066: #define        SHORT2ANGLE(x)  ((x)*(360.0/65536))
        !          1067: 
        !          1068: 
        !          1069: //
        !          1070: // config strings are a general means of communication from
        !          1071: // the server to all connected clients.
        !          1072: // Each config string can be at most MAX_QPATH characters.
        !          1073: //
        !          1074: #define        CS_NAME                         0
        !          1075: #define        CS_CDTRACK                      1
        !          1076: #define        CS_SKY                          2
        !          1077: #define        CS_SKYAXIS                      3               // %f %f %f format
        !          1078: #define        CS_SKYROTATE            4
        !          1079: #define        CS_STATUSBAR            5               // display program string
        !          1080: 
        !          1081: #define CS_AIRACCEL                    29              // air acceleration control
        !          1082: #define        CS_MAXCLIENTS           30
        !          1083: #define        CS_MAPCHECKSUM          31              // for catching cheater maps
        !          1084: 
        !          1085: #define        CS_MODELS                       32
        !          1086: #define        CS_SOUNDS                       (CS_MODELS+MAX_MODELS)
        !          1087: #define        CS_IMAGES                       (CS_SOUNDS+MAX_SOUNDS)
        !          1088: #define        CS_LIGHTS                       (CS_IMAGES+MAX_IMAGES)
        !          1089: #define        CS_ITEMS                        (CS_LIGHTS+MAX_LIGHTSTYLES)
        !          1090: #define        CS_PLAYERSKINS          (CS_ITEMS+MAX_ITEMS)
        !          1091: #define CS_GENERAL                     (CS_PLAYERSKINS+MAX_CLIENTS)
        !          1092: #define        MAX_CONFIGSTRINGS       (CS_GENERAL+MAX_GENERAL)
        !          1093: 
        !          1094: 
        !          1095: //==============================================
        !          1096: 
        !          1097: 
        !          1098: // entity_state_t->event values
        !          1099: // ertity events are for effects that take place reletive
        !          1100: // to an existing entities origin.  Very network efficient.
        !          1101: // All muzzle flashes really should be converted to events...
        !          1102: typedef enum
        !          1103: {
        !          1104:        EV_NONE,
        !          1105:        EV_ITEM_RESPAWN,
        !          1106:        EV_FOOTSTEP,
        !          1107:        EV_FALLSHORT,
        !          1108:        EV_FALL,
        !          1109:        EV_FALLFAR,
        !          1110:        EV_PLAYER_TELEPORT,
        !          1111:        EV_OTHER_TELEPORT
        !          1112: } entity_event_t;
        !          1113: 
        !          1114: 
        !          1115: // entity_state_t is the information conveyed from the server
        !          1116: // in an update message about entities that the client will
        !          1117: // need to render in some way
        !          1118: typedef struct entity_state_s
        !          1119: {
        !          1120:        int             number;                 // edict index
        !          1121: 
        !          1122:        vec3_t  origin;
        !          1123:        vec3_t  angles;
        !          1124:        vec3_t  old_origin;             // for lerping
        !          1125:        int             modelindex;
        !          1126:        int             modelindex2, modelindex3, modelindex4;  // weapons, CTF flags, etc
        !          1127:        int             frame;
        !          1128:        int             skinnum;
        !          1129:        unsigned int            effects;                // PGM - we're filling it, so it needs to be unsigned
        !          1130:        int             renderfx;
        !          1131:        int             solid;                  // for client side prediction, 8*(bits 0-4) is x/y radius
        !          1132:                                                        // 8*(bits 5-9) is z down distance, 8(bits10-15) is z up
        !          1133:                                                        // gi.linkentity sets this properly
        !          1134:        int             sound;                  // for looping sounds, to guarantee shutoff
        !          1135:        int             event;                  // impulse events -- muzzle flashes, footsteps, etc
        !          1136:                                                        // events only go out for a single frame, they
        !          1137:                                                        // are automatically cleared each frame
        !          1138: } entity_state_t;
        !          1139: 
        !          1140: //==============================================
        !          1141: 
        !          1142: 
        !          1143: // player_state_t is the information needed in addition to pmove_state_t
        !          1144: // to rendered a view.  There will only be 10 player_state_t sent each second,
        !          1145: // but the number of pmove_state_t changes will be reletive to client
        !          1146: // frame rates
        !          1147: typedef struct
        !          1148: {
        !          1149:        pmove_state_t   pmove;          // for prediction
        !          1150: 
        !          1151:        // these fields do not need to be communicated bit-precise
        !          1152: 
        !          1153:        vec3_t          viewangles;             // for fixed views
        !          1154:        vec3_t          viewoffset;             // add to pmovestate->origin
        !          1155:        vec3_t          kick_angles;    // add to view direction to get render angles
        !          1156:                                                                // set by weapon kicks, pain effects, etc
        !          1157: 
        !          1158:        vec3_t          gunangles;
        !          1159:        vec3_t          gunoffset;
        !          1160:        int                     gunindex;
        !          1161:        int                     gunframe;
        !          1162: 
        !          1163:        float           blend[4];               // rgba full screen effect
        !          1164:        
        !          1165:        float           fov;                    // horizontal field of view
        !          1166: 
        !          1167:        int                     rdflags;                // refdef flags
        !          1168: 
        !          1169:        short           stats[MAX_STATS];               // fast status bar updates
        !          1170: } player_state_t;
        !          1171: 
        !          1172: 
        !          1173: // ==================
        !          1174: // PGM 
        !          1175: #define VIDREF_GL              1
        !          1176: #define VIDREF_SOFT            2
        !          1177: #define VIDREF_OTHER   3
        !          1178: 
        !          1179: extern int vidref_val;
        !          1180: // PGM
        !          1181: // ==================

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.