]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/dpdefs/progsdefs.qh
Rename defs to qh
[xonotic/xonotic-data.pk3dir.git] / qcsrc / dpdefs / progsdefs.qh
diff --git a/qcsrc/dpdefs/progsdefs.qh b/qcsrc/dpdefs/progsdefs.qh
new file mode 100644 (file)
index 0000000..0064060
--- /dev/null
@@ -0,0 +1,508 @@
+#ifndef PROGSDEFS_H
+#define PROGSDEFS_H
+
+/*
+==============================================================================
+
+                       SOURCE FOR GLOBALVARS_T C STRUCTURE
+                       MUST NOT BE MODIFIED, OR CRC ERRORS WILL APPEAR
+
+==============================================================================
+*/
+
+//
+// system globals
+//
+entity         self;
+entity         other;
+entity         world;
+float          time;
+float          frametime;
+
+float          force_retouch;          // force all entities to touch triggers
+                                                               // next frame.  this is needed because
+                                                               // non-moving things don't normally scan
+                                                               // for triggers, and when a trigger is
+                                                               // created (like a teleport trigger), it
+                                                               // needs to catch everything.
+                                                               // decremented each frame, so set to 2
+                                                               // to guarantee everything is touched
+string         mapname;
+
+float          deathmatch;
+float          coop;
+float          teamplay;
+
+float          serverflags;            // propagated from level to level, used to
+                                                               // keep track of completed episodes
+
+float          total_secrets;
+float          total_monsters;
+
+float          found_secrets;          // number of secrets found
+float          killed_monsters;        // number of monsters killed
+
+
+// spawnparms are used to encode information about clients across server
+// level changes
+float          parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9, parm10, parm11, parm12, parm13, parm14, parm15, parm16;
+
+//
+// global variables set by built in functions
+//
+vector         v_forward, v_up, v_right;       // set by makevectors()
+
+// set by traceline / tracebox
+float          trace_allsolid;
+float          trace_startsolid;
+float          trace_fraction;
+vector         trace_endpos;
+vector         trace_plane_normal;
+float          trace_plane_dist;
+entity         trace_ent;
+float          trace_inopen;
+float          trace_inwater;
+
+entity         msg_entity;                             // destination of single entity writes
+
+//
+// required prog functions
+//
+void()                 main;                                           // only for testing
+
+void()         StartFrame;
+
+void()                 PlayerPreThink;
+void()                 PlayerPostThink;
+
+void()         ClientKill;
+void()         ClientConnect;
+void()                 PutClientInServer;              // call after setting the parm1... parms
+void()         ClientDisconnect;
+
+void()         SetNewParms;                    // called when a client first connects to
+                                                                       // a server. sets parms so they can be
+                                                                       // saved off for restarts
+
+void()         SetChangeParms;                 // call to set parms for self so they can
+                                                                       // be saved for a level transition
+
+
+//================================================
+void           end_sys_globals;                // flag for structure dumping
+//================================================
+
+/*
+==============================================================================
+
+                       SOURCE FOR ENTVARS_T C STRUCTURE
+                       MUST NOT BE MODIFIED, OR CRC ERRORS WILL APPEAR
+
+==============================================================================
+*/
+
+//
+// system fields (*** = do not set in prog code, maintained by C code)
+//
+.float         modelindex;             // *** model index in the precached list
+.vector                absmin, absmax; // *** origin + mins / maxs
+
+.float         ltime;                  // local time for entity
+.float         movetype;
+.float         solid;
+
+.vector                origin;                 // ***
+.vector                oldorigin;              // ***
+.vector                velocity;
+.vector                angles;
+.vector                avelocity;
+
+.vector                punchangle;             // temp angle adjust from damage or recoil
+
+.string                classname;              // spawn function
+.string                model;
+.float         frame;
+.float         skin;
+.float         effects;
+
+.vector                mins, maxs;             // bounding box extents reletive to origin
+.vector                size;                   // maxs - mins
+
+.void()                touch;
+.void()                use;
+.void()                think;
+.void()                blocked;                // for doors or plats, called when can't push other
+
+.float         nextthink;
+.entity                groundentity;
+
+// stats
+.float         health;
+.float         frags;
+.float         weapon;                 // one of the IT_SHOTGUN, etc flags
+.string                weaponmodel;
+.float         weaponframe;
+.float         currentammo;
+.float         ammo_shells, ammo_nails, ammo_rockets, ammo_cells;
+
+.float         items;                  // bit flags
+
+.float         takedamage;
+.entity                chain;
+.float         deadflag;
+
+.vector                view_ofs;                       // add to origin to get eye point
+
+
+.float         button0;                // fire
+.float         button1;                // use
+.float         button2;                // jump
+
+.float         impulse;                // weapon changes
+
+.float         fixangle;
+.vector                v_angle;                // view / targeting angle for players
+.float         idealpitch;             // calculated pitch angle for lookup up slopes
+
+
+.string                netname;
+
+.entity        enemy;
+
+.float         flags;
+
+.float         colormap;
+.float         team;
+
+.float         max_health;             // players maximum health is stored here
+
+.float         teleport_time;  // don't back up
+
+.float         armortype;              // save this fraction of incoming damage
+.float         armorvalue;
+
+.float         waterlevel;             // 0 = not in, 1 = feet, 2 = wast, 3 = eyes
+.float         watertype;              // a contents value
+
+.float         ideal_yaw;
+.float         yaw_speed;
+
+.entity                aiment;
+
+.entity        goalentity;             // a movetarget or an enemy
+
+.float         spawnflags;
+
+.string                target;
+.string                targetname;
+
+// damage is accumulated through a frame. and sent as one single
+// message, so the super shotgun doesn't generate huge messages
+.float         dmg_take;
+.float         dmg_save;
+.entity                dmg_inflictor;
+
+.entity                owner;          // who launched a missile
+.vector                movedir;        // mostly for doors, but also used for waterjump
+
+.string                message;                // trigger messages
+
+.float         sounds;         // either a cd track number or sound number
+
+.string                noise, noise1, noise2, noise3;  // contains names of wavs to play
+
+//================================================
+void           end_sys_fields;                 // flag for structure dumping
+//================================================
+
+/*
+==============================================================================
+
+                               CONSTANT DEFINITIONS
+
+==============================================================================
+*/
+
+
+//
+// constants
+//
+
+// edict.flags
+const int FL_FLY                               = 1;
+const int FL_SWIM                              = 2;
+const int FL_CLIENT                            = 8;    // set for all client edicts
+const int FL_INWATER                   = 16;   // for enter / leave water splash
+const int FL_MONSTER                   = 32;
+const int FL_GODMODE                   = 64;   // player cheat
+const int FL_NOTARGET                  = 128;  // player cheat
+const int FL_ITEM                              = 256;  // extra wide size for bonus items
+const int FL_ONGROUND                  = 512;  // standing on something
+const int FL_PARTIALGROUND             = 1024; // not all corners are valid
+const int FL_WATERJUMP                 = 2048; // player jumping out of water
+const int FL_JUMPRELEASED              = 4096; // for jump debouncing
+
+// edict.movetype values
+const int MOVETYPE_NONE                        = 0;    // never moves
+//const int    MOVETYPE_ANGLENOCLIP= 1;
+//const int    MOVETYPE_ANGLECLIP      = 2;
+const int MOVETYPE_WALK                        = 3;    // players only
+const int MOVETYPE_STEP                        = 4;    // discrete, not real time unless fall
+const int MOVETYPE_FLY                 = 5;
+const int MOVETYPE_TOSS                        = 6;    // gravity
+const int MOVETYPE_PUSH                        = 7;    // no clip to world, push and crush
+const int MOVETYPE_NOCLIP              = 8;
+const int MOVETYPE_FLYMISSILE  = 9;    // fly with extra size against monsters
+const int MOVETYPE_BOUNCE              = 10;
+const int MOVETYPE_BOUNCEMISSILE= 11;  // bounce with extra size
+
+// edict.solid values
+const int SOLID_NOT                            = 0;    // no interaction with other objects
+const int SOLID_TRIGGER                        = 1;    // touch on edge, but not blocking
+const int SOLID_BBOX                   = 2;    // touch on edge, block
+const int SOLID_SLIDEBOX               = 3;    // touch on edge, but not an onground
+const int SOLID_BSP                            = 4;    // bsp clip, touch on edge, block
+
+// range values
+const int RANGE_MELEE                  = 0;
+const int RANGE_NEAR                   = 1;
+const int RANGE_MID                            = 2;
+const int RANGE_FAR                            = 3;
+
+// deadflag values
+
+const int DEAD_NO                              = 0;
+const int DEAD_DYING                   = 1;
+const int DEAD_DEAD                            = 2;
+const int DEAD_RESPAWNABLE             = 3;
+const int DEAD_RESPAWNING              = 4; // dead, waiting for buttons to be released
+
+// takedamage values
+
+const int DAMAGE_NO                            = 0;
+const int DAMAGE_YES                   = 1;
+const int DAMAGE_AIM                   = 2;
+
+// items
+const int IT_AXE                               = 4096;
+const int IT_SHOTGUN                   = 1;
+const int IT_SUPER_SHOTGUN             = 2;
+const int IT_NAILGUN                   = 4;
+const int IT_SUPER_NAILGUN             = 8;
+const int IT_GRENADE_LAUNCHER  = 16;
+const int IT_ROCKET_LAUNCHER   = 32;
+const int IT_LIGHTNING                 = 64;
+const int IT_EXTRA_WEAPON              = 128;
+
+//const int IT_SHELLS                  = 256;
+//const int IT_NAILS                   = 512;
+//const int IT_ROCKETS                 = 1024;
+//const int IT_CELLS                   = 2048;
+
+const int IT_ARMOR1                            = 8192;
+const int IT_ARMOR2                            = 16384;
+const int IT_ARMOR3                            = 32768;
+const int IT_SUPERHEALTH               = 65536;
+
+//const int IT_KEY1                            = 131072;
+//const int IT_KEY2                            = 262144;
+
+const int IT_INVISIBILITY              = 524288;
+const int IT_INVULNERABILITY   = 1048576;
+const int IT_SUIT                              = 2097152;
+const int IT_QUAD                              = 4194304;
+
+// point content values
+
+const int CONTENT_EMPTY                        = -1;
+const int CONTENT_SOLID                        = -2;
+const int CONTENT_WATER                        = -3;
+const int CONTENT_SLIME                        = -4;
+const int CONTENT_LAVA                 = -5;
+const int CONTENT_SKY                  = -6;
+
+const int STATE_TOP                            = 0;
+const int STATE_BOTTOM                 = 1;
+const int STATE_UP                             = 2;
+const int STATE_DOWN                   = 3;
+
+const vector VEC_ORIGIN                = '0 0 0';
+const vector VEC_HULL_MIN              = '-16 -16 -24';
+const vector VEC_HULL_MAX              = '16 16 32';
+
+const vector VEC_HULL2_MIN             = '-32 -32 -24';
+const vector VEC_HULL2_MAX             = '32 32 64';
+
+// protocol bytes
+const int SVC_TEMPENTITY               = 23;
+const int SVC_KILLEDMONSTER            = 27;
+const int SVC_FOUNDSECRET              = 28;
+const int SVC_INTERMISSION             = 30;
+const int SVC_FINALE                   = 31;
+const int SVC_CDTRACK                  = 32;
+const int SVC_SELLSCREEN               = 33;
+
+
+const int TE_SPIKE                             = 0;
+const int TE_SUPERSPIKE                        = 1;
+const int TE_GUNSHOT                   = 2;
+const int TE_EXPLOSION                 = 3;
+const int TE_TAREXPLOSION              = 4;
+const int TE_LIGHTNING1                        = 5;
+const int TE_LIGHTNING2                        = 6;
+const int TE_WIZSPIKE                  = 7;
+const int TE_KNIGHTSPIKE               = 8;
+const int TE_LIGHTNING3                        = 9;
+const int TE_LAVASPLASH                        = 10;
+const int TE_TELEPORT                  = 11;
+
+// sound channels
+// channel 0 never willingly overrides
+// other channels (1-7) allways override a playing sound on that channel
+const int CHAN_AUTO                            = 0;
+const int CHAN_WEAPON                  = 1;
+const int CHAN_VOICE                   = 2;
+const int CHAN_ITEM                            = 3;
+const int CHAN_BODY                            = 4;
+
+const int ATTN_NONE                            = 0;
+const int ATTN_NORM                            = 1;
+const int ATTN_IDLE                            = 2;
+const int ATTN_STATIC                  = 3;
+
+// update types
+
+const int UPDATE_GENERAL               = 0;
+const int UPDATE_STATIC                        = 1;
+const int UPDATE_BINARY                        = 2;
+const int UPDATE_TEMP                  = 3;
+
+// entity effects
+
+const int EF_BRIGHTFIELD               = 1;
+const int EF_MUZZLEFLASH               = 2;
+const int EF_BRIGHTLIGHT               = 4;
+const int EF_DIMLIGHT                  = 8;
+
+
+// messages
+const int MSG_BROADCAST                        = 0;            // unreliable to all
+const int MSG_ONE                              = 1;            // reliable to one (msg_entity)
+const int MSG_ALL                              = 2;            // reliable to all
+const int MSG_INIT                             = 3;            // write to the init string
+
+//===========================================================================
+
+//
+// builtin functions
+//
+
+void(vector ang)       makevectors             = #1;           // sets v_forward, etc globals
+void(entity e, vector o) setorigin     = #2;
+void(entity e, string m) setmodel      = #3;           // set movetype and solid first
+void(entity e, vector min, vector max) setsize = #4;
+// #5 was removed
+void() break_to_debugger                                               = #6;
+float() random                                         = #7;           // returns 0 - 1
+void(entity e, float chan, string samp, float vol, float atten) sound = #8;
+vector(vector v) normalize                     = #9;
+void(string e, ...) error                              = #10;
+void(string e, ...) objerror                           = #11;
+float(vector v) vlen                           = #12;
+float(vector v) vectoyaw                       = #13;
+entity() spawn                                         = #14;
+void(entity e) remove                          = #15;
+
+// sets trace_* globals
+// nomonsters can be:
+// An entity will also be ignored for testing if forent == test,
+// forent->owner == test, or test->owner == forent
+// a forent of world is ignored
+void(vector v1, vector v2, float nomonsters, entity forent) traceline = #16;
+
+entity() checkclient                           = #17;  // returns a client to look for
+entity(entity start, .string fld, string match) find = #18;
+string(string s) precache_sound                = #19;
+string(string s) precache_model                = #20;
+void(entity client, string s, ...)stuffcmd = #21;
+entity(vector org, float rad) findradius = #22;
+void(string s, ...) bprint                             = #23;
+void(entity client, string s, ...) sprint = #24;
+void(string s, ...) dprint                             = #25;
+string(float f) ftos                           = #26;
+string(vector v) vtos                          = #27;
+void() coredump                                                = #28;          // prints all edicts
+void() traceon                                         = #29;          // turns statment trace on
+void() traceoff                                                = #30;
+void(entity e) eprint                          = #31;          // prints an entire edict
+float(float yaw, float dist) walkmove  = #32;  // returns true or false
+// #33 was removed
+float() droptofloor= #34;      // true if landed on floor
+void(float style, string value) lightstyle = #35;
+float(float v) rint                                    = #36;          // round to nearest int
+float(float v) floor                           = #37;          // largest integer <= v
+float(float v) ceil                                    = #38;          // smallest integer >= v
+// #39 was removed
+float(entity e) checkbottom                    = #40;          // true if self is on ground
+float(vector v) pointcontents          = #41;          // returns a CONTENT_*
+// #42 was removed
+float(float f) fabs = #43;
+vector(entity e, float speed) aim = #44;               // returns the shooting vector
+float(string s) cvar = #45;                                            // return cvar.value
+void(string s, ...) localcmd = #46;                                    // put string into local que
+entity(entity e) nextent = #47;                                        // for looping through all ents
+void(vector o, vector d, float color, float count) particle = #48;// start a particle effect
+void() ChangeYaw = #49;                                                // turn towards self.ideal_yaw
+                                                                                       // at self.yaw_speed
+// #50 was removed
+vector(vector v) vectoangles                   = #51;
+
+//
+// direct client message generation
+//
+void(float to, float f) WriteByte              = #52;
+void(float to, float f) WriteChar              = #53;
+void(float to, float f) WriteShort             = #54;
+void(float to, float f) WriteLong              = #55;
+void(float to, float f) WriteCoord             = #56;
+void(float to, float f) WriteAngle             = #57;
+void(float to, string s, ...) WriteString      = #58;
+void(float to, entity s) WriteEntity   = #59;
+
+//
+// broadcast client message generation
+//
+
+// void(float f) bWriteByte            = #59;
+// void(float f) bWriteChar            = #60;
+// void(float f) bWriteShort           = #61;
+// void(float f) bWriteLong            = #62;
+// void(float f) bWriteCoord           = #63;
+// void(float f) bWriteAngle           = #64;
+// void(string s) bWriteString = #65;
+// void(entity e) bWriteEntity = #66;
+
+void(float step) movetogoal                            = #67;
+
+string(string s) precache_file         = #68;  // no effect except for -copy
+void(entity e) makestatic              = #69;
+void(string s) changelevel = #70;
+
+//#71 was removed
+
+void(string name, string value) cvar_set = #72;        // sets cvar.value
+
+void(entity client, string s, ...) centerprint = #73;  // sprint, but in middle
+
+void(vector pos, string samp, float vol, float atten) ambientsound = #74;
+
+string(string s) precache_model2       = #75;          // registered version only
+string(string s) precache_sound2       = #76;          // registered version only
+string(string s) precache_file2                = #77;          // registered version only
+
+void(entity e) setspawnparms           = #78;          // set parm1... to the
+                                                                                               // values at level start
+                                                                                               // for coop respawn
+
+//============================================================================
+#endif
\ No newline at end of file