mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2024-11-23 04:32:28 +00:00
Removed the zcam defines again and did some cleanups
This commit is contained in:
parent
08555edb8d
commit
468c0073ee
1 changed files with 197 additions and 293 deletions
|
@ -5,6 +5,9 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.63 2002/04/02 00:56:18 jbravo
|
||||
// Removed the zcam defines again and did some cleanups
|
||||
//
|
||||
// Revision 1.62 2002/04/01 22:23:14 slicer
|
||||
// Added "weapon" command buffering | Solved Gren Mode Bug
|
||||
//
|
||||
|
@ -104,15 +107,11 @@
|
|||
//==================================================================
|
||||
|
||||
// the "gameversion" client command will print this plus compile date
|
||||
#define GAMEVERSION "reaction"
|
||||
|
||||
// NiceAss: Took it out until later.
|
||||
#define __ZCAM__
|
||||
|
||||
#define GAMEVERSION "reaction"
|
||||
#define BODY_QUEUE_SIZE 8
|
||||
|
||||
// JBravo: Max number of killed enemys to track
|
||||
#define RQ3_MAXKILLS 5
|
||||
#define RQ3_MAXKILLS 5
|
||||
|
||||
// Blaze: How long someone bleeds for
|
||||
// Elder: This doesn't work the same as Q2 because clients and servers can
|
||||
|
@ -120,44 +119,43 @@
|
|||
// (20 snapshots per second) so we double it from 10.
|
||||
// Ideally, this number should match the server's sv_fps cvar value for those
|
||||
// that run non-standard server frame rates.
|
||||
#define BLEED_TIME 20
|
||||
#define BLEED_TIME 20
|
||||
// Elder: Everyone knows you lose 6 health from the moment you start bandaging
|
||||
// Let's enforce that in-code because it's sometimes 7 or even 8
|
||||
// Elder: LOL it's 3, dumb Elder!
|
||||
#define BLEED_BANDAGE 3
|
||||
//#define BLEED_BANDAGE_TIME 5400 // 27 x 2
|
||||
#define BLEED_BANDAGE_TIME 5600 // 27 x 2
|
||||
#define BLEED_BANDAGE_TIME 5400 // 27 x 2
|
||||
|
||||
// types of locations that can be hit
|
||||
#define LOC_HDAM 1 // head
|
||||
#define LOC_CDAM 2 // chest
|
||||
#define LOC_SDAM 3 // stomach
|
||||
#define LOC_LDAM 4 // legs
|
||||
#define LOC_HDAM 1 // head
|
||||
#define LOC_CDAM 2 // chest
|
||||
#define LOC_SDAM 3 // stomach
|
||||
#define LOC_LDAM 4 // legs
|
||||
|
||||
#define INFINITE 1000000
|
||||
|
||||
#define FRAMETIME 100 // msec
|
||||
#define CARNAGE_REWARD_TIME 3000
|
||||
#define REWARD_SPRITE_TIME 2000
|
||||
#define FRAMETIME 100 // msec
|
||||
#define CARNAGE_REWARD_TIME 3000
|
||||
#define REWARD_SPRITE_TIME 2000
|
||||
|
||||
#define INTERMISSION_DELAY_TIME 1000
|
||||
#define INTERMISSION_DELAY_TIME 1000
|
||||
#define SP_INTERMISSION_DELAY_TIME 5000
|
||||
|
||||
// gentity->flags
|
||||
#define FL_GODMODE 0x00000010
|
||||
#define FL_NOTARGET 0x00000020
|
||||
#define FL_GODMODE 0x00000010
|
||||
#define FL_NOTARGET 0x00000020
|
||||
#define FL_TEAMSLAVE 0x00000400 // not the first on the team
|
||||
#define FL_NO_KNOCKBACK 0x00000800
|
||||
#define FL_DROPPED_ITEM 0x00001000
|
||||
#define FL_NO_BOTS 0x00002000 // spawn point not for bot use
|
||||
#define FL_NO_BOTS 0x00002000 // spawn point not for bot use
|
||||
#define FL_NO_HUMANS 0x00004000 // spawn point just for bots
|
||||
#define FL_FORCE_GESTURE 0x00008000 // force gesture on client
|
||||
//Elder: err - this looks funny... should it be 0x00010000 ?
|
||||
//#define FL_THROWN_ITEM 0x00016000 // XRAY FMJ weapon throwing
|
||||
#define FL_THROWN_ITEM 0x00010000 // XRAY FMJ weapon throwing
|
||||
//#define FL_THROWN_ITEM 0x00016000 // XRAY FMJ weapon throwing
|
||||
#define FL_THROWN_ITEM 0x00010000 // XRAY FMJ weapon throwing
|
||||
#define FL_RQ3_JUNKITEM 0x00020000 // Elder: the item we want to remove
|
||||
//Elder: moved to bg_public.h
|
||||
//#define FL_THROWN_KNIFE 0x00040000 // Elder: thrown knife special case
|
||||
//#define FL_THROWN_KNIFE 0x00040000 // Elder: thrown knife special case
|
||||
|
||||
// movers are things like doors, plats, buttons, etc
|
||||
typedef enum {
|
||||
|
@ -172,14 +170,11 @@ typedef enum {
|
|||
ROTATOR_2TO1
|
||||
} moverState_t;
|
||||
|
||||
#define SP_PODIUM_MODEL "models/mapobjects/podium/podium4.md3"
|
||||
|
||||
#define SP_PODIUM_MODEL "models/mapobjects/podium/podium4.md3"
|
||||
#define RQ3_RESPAWNTIME_DEFAULT 60000 // Elder: time for weapons to respawn - up to 60s
|
||||
|
||||
#define SP_AUTOOPEN 4 // Elder: revert to Q3 behaviour
|
||||
#define SP_DOORTOGGLE 8 // Elder: added to enable mover toggling
|
||||
|
||||
#define MAXDOORTIME 100 // Elder: max time the opendoor key can stay open
|
||||
#define SP_AUTOOPEN 4 // Elder: revert to Q3 behaviour
|
||||
#define SP_DOORTOGGLE 8 // Elder: added to enable mover toggling
|
||||
#define MAXDOORTIME 100 // Elder: max time the opendoor key can stay open
|
||||
|
||||
//============================================================================
|
||||
|
||||
|
@ -187,63 +182,52 @@ typedef struct gentity_s gentity_t;
|
|||
typedef struct gclient_s gclient_t;
|
||||
|
||||
struct gentity_s {
|
||||
entityState_t s; // communicated by server to clients
|
||||
entityShared_t r; // shared by both the server system and game
|
||||
entityState_t s; // communicated by server to clients
|
||||
entityShared_t r; // shared by both the server system and game
|
||||
|
||||
// DO NOT MODIFY ANYTHING ABOVE THIS, THE SERVER
|
||||
// EXPECTS THE FIELDS IN THAT ORDER!
|
||||
//================================
|
||||
|
||||
struct gclient_s *client; // NULL if not a client
|
||||
|
||||
struct gclient_s *client; // NULL if not a client
|
||||
qboolean inuse;
|
||||
|
||||
char *classname; // set in QuakeEd
|
||||
int spawnflags; // set in QuakeEd
|
||||
|
||||
qboolean neverFree; // if true, FreeEntity will only unlink
|
||||
// bodyque uses this
|
||||
char *classname; // set in QuakeEd
|
||||
int spawnflags; // set in QuakeEd
|
||||
qboolean neverFree; // if true, FreeEntity will only unlink
|
||||
// bodyque uses this
|
||||
// JBravo: adding func_explosive
|
||||
int damage_radius;
|
||||
int mass;
|
||||
int tension;
|
||||
int bounce;
|
||||
int material;
|
||||
int size;
|
||||
|
||||
int flags; // FL_* variables
|
||||
|
||||
int damage_radius;
|
||||
int mass;
|
||||
int tension;
|
||||
int bounce;
|
||||
int material;
|
||||
int size;
|
||||
int flags; // FL_* variables
|
||||
char *model;
|
||||
char *model2;
|
||||
int freetime; // level.time when the object was freed
|
||||
|
||||
int eventTime; // events will be cleared EVENT_VALID_MSEC after set
|
||||
int freetime; // level.time when the object was freed
|
||||
int eventTime; // events will be cleared EVENT_VALID_MSEC after set
|
||||
qboolean freeAfterEvent;
|
||||
qboolean unlinkAfterEvent;
|
||||
|
||||
qboolean physicsObject; // if true, it can be pushed by movers and fall off edges
|
||||
// all game items are physicsObjects,
|
||||
// all game items are physicsObjects,
|
||||
float physicsBounce; // 1.0 = continuous bounce, 0.0 = no bounce
|
||||
int clipmask; // brushes with this content value will be collided against
|
||||
// when moving. items and corpses do not collide against
|
||||
// players, for instance
|
||||
|
||||
int clipmask; // brushes with this content value will be collided against
|
||||
// when moving. items and corpses do not collide against
|
||||
// players, for instance
|
||||
// movers
|
||||
moverState_t moverState;
|
||||
int soundPos1;
|
||||
int sound1to2;
|
||||
int sound2to1;
|
||||
int soundPos2;
|
||||
int soundLoop;
|
||||
int soundPos1;
|
||||
int sound1to2;
|
||||
int sound2to1;
|
||||
int soundPos2;
|
||||
int soundLoop;
|
||||
gentity_t *parent;
|
||||
gentity_t *nextTrain;
|
||||
gentity_t *prevTrain;
|
||||
vec3_t pos1, pos2;
|
||||
|
||||
char *message;
|
||||
|
||||
int timestamp; // body queue sinking, etc
|
||||
|
||||
int timestamp; // body queue sinking, etc
|
||||
float angle; // set in editor, -1 = up, -2 = down
|
||||
char *target;
|
||||
char *targetname;
|
||||
|
@ -257,7 +241,7 @@ struct gentity_s {
|
|||
float speed;
|
||||
vec3_t movedir;
|
||||
|
||||
int nextthink;
|
||||
int nextthink;
|
||||
void (*think)(gentity_t *self);
|
||||
void (*reached)(gentity_t *self); // movers call this when hitting endpoint
|
||||
void (*blocked)(gentity_t *self, gentity_t *other);
|
||||
|
@ -265,46 +249,37 @@ struct gentity_s {
|
|||
void (*use)(gentity_t *self, gentity_t *other, gentity_t *activator);
|
||||
void (*pain)(gentity_t *self, gentity_t *attacker, int damage);
|
||||
void (*die)(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod);
|
||||
|
||||
int pain_debounce_time;
|
||||
int fly_sound_debounce_time; // wind tunnel
|
||||
int last_move_time;
|
||||
|
||||
int health;
|
||||
|
||||
int pain_debounce_time;
|
||||
int fly_sound_debounce_time; // wind tunnel
|
||||
int last_move_time;
|
||||
int health;
|
||||
qboolean takedamage;
|
||||
|
||||
int damage;
|
||||
int splashDamage; // quad will increase this without increasing radius
|
||||
int splashRadius;
|
||||
int methodOfDeath;
|
||||
int splashMethodOfDeath;
|
||||
|
||||
int count;
|
||||
|
||||
int damage;
|
||||
int splashDamage; // quad will increase this without increasing radius
|
||||
int splashRadius;
|
||||
int methodOfDeath;
|
||||
int splashMethodOfDeath;
|
||||
int count;
|
||||
gentity_t *chain;
|
||||
gentity_t *enemy;
|
||||
gentity_t *activator;
|
||||
gentity_t *teamchain; // next entity in team
|
||||
gentity_t *teammaster; // master of the team
|
||||
gentity_t *teammaster; // master of the team
|
||||
|
||||
#ifdef MISSIONPACK
|
||||
int kamikazeTime;
|
||||
int kamikazeShockTime;
|
||||
int kamikazeTime;
|
||||
int kamikazeShockTime;
|
||||
#endif
|
||||
|
||||
int watertype;
|
||||
int waterlevel;
|
||||
|
||||
int noise_index;
|
||||
|
||||
int watertype;
|
||||
int waterlevel;
|
||||
int noise_index;
|
||||
// timing variables
|
||||
float wait;
|
||||
float random;
|
||||
|
||||
gitem_t *item; // for bonus items
|
||||
float distance; // VALKYRIE: for rotating door
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -318,11 +293,9 @@ typedef enum {
|
|||
SPECTATOR_NOT,
|
||||
SPECTATOR_FREE,
|
||||
SPECTATOR_FOLLOW,
|
||||
#ifdef __ZCAM__
|
||||
SPECTATOR_ZCAM,
|
||||
SPECTATOR_CAMERA_FLIC,
|
||||
SPECTATOR_CAMERA_SWING,
|
||||
#endif
|
||||
SPECTATOR_SCOREBOARD
|
||||
} spectatorState_t;
|
||||
|
||||
|
@ -333,16 +306,13 @@ typedef enum {
|
|||
|
||||
typedef struct {
|
||||
playerTeamStateState_t state;
|
||||
|
||||
int location;
|
||||
|
||||
int captures;
|
||||
int basedefense;
|
||||
int carrierdefense;
|
||||
int flagrecovery;
|
||||
int fragcarrier;
|
||||
int assists;
|
||||
|
||||
int location;
|
||||
int captures;
|
||||
int basedefense;
|
||||
int carrierdefense;
|
||||
int flagrecovery;
|
||||
int fragcarrier;
|
||||
int assists;
|
||||
float lasthurtcarrier;
|
||||
float lastreturnedflag;
|
||||
float flagsince;
|
||||
|
@ -359,60 +329,56 @@ typedef struct {
|
|||
// time and reading them back at connection time. Anything added here
|
||||
// MUST be dealt with in G_InitSessionData() / G_ReadSessionData() / G_WriteSessionData()
|
||||
typedef struct {
|
||||
team_t sessionTeam;
|
||||
team_t sessionTeam;
|
||||
team_t savedTeam; // JBravo: Used to hold the real team status of a player.
|
||||
int spectatorTime; // for determining next-in-line to play
|
||||
spectatorState_t spectatorState;
|
||||
int spectatorClient; // for chasecam and follow mode
|
||||
int wins, losses; // tournament stats
|
||||
qboolean teamLeader; // true when this client is a team leader
|
||||
qboolean teamLeader; // true when this client is a team leader
|
||||
gentity_t *spawnPoint; // JBravo: This players spawnpoint
|
||||
qboolean teamSpawn; // JBravo: This player is being spawned with his team.
|
||||
} clientSession_t;
|
||||
|
||||
//
|
||||
#define MAX_NETNAME 36
|
||||
#define MAX_NETNAME 36
|
||||
#define MAX_VOTE_COUNT 3
|
||||
|
||||
// client data that stays across multiple respawns, but is cleared
|
||||
// on each level change or team change at ClientBegin()
|
||||
typedef struct {
|
||||
//Slicer: Matchmode
|
||||
team_t captain;
|
||||
team_t sub;
|
||||
team_t captain;
|
||||
team_t sub;
|
||||
clientConnected_t connected;
|
||||
// aasimon: No Need for this here, using a cvar to record the clientnumber of referee, so that map_restarts dont change
|
||||
// the referee
|
||||
// qboolean referee;
|
||||
|
||||
usercmd_t cmd; // we would lose angles if not persistant
|
||||
usercmd_t cmd; // we would lose angles if not persistant
|
||||
qboolean localClient; // true if "ip" info key is "localhost"
|
||||
qboolean initialSpawn; // the first spawn should be at a cool location
|
||||
qboolean predictItemPickup; // based on cg_predictItems userinfo
|
||||
qboolean pmoveFixed; //
|
||||
qboolean pmoveFixed; //
|
||||
char netname[MAX_NETNAME];
|
||||
int maxHealth; // for handicapping
|
||||
int enterTime; // level.time the client entered the game
|
||||
playerTeamState_t teamState; // status in teamplay games
|
||||
int voteCount; // to prevent people from constantly calling votes
|
||||
int teamVoteCount; // to prevent people from constantly calling votes
|
||||
qboolean teamInfo; // send team overlay updates?
|
||||
|
||||
int maxHealth; // for handicapping
|
||||
int enterTime; // level.time the client entered the game
|
||||
playerTeamState_t teamState; // status in teamplay games
|
||||
int voteCount; // to prevent people from constantly calling votes
|
||||
int teamVoteCount; // to prevent people from constantly calling votes
|
||||
qboolean teamInfo; // send team overlay updates?
|
||||
qboolean hadUniqueWeapon[MAX_WEAPONS]; //Elder: for "ammo" in last gun
|
||||
|
||||
int sayTime; // Elder: say validation stuff
|
||||
int sayCount;
|
||||
int sayWarnings;
|
||||
int sayBans;
|
||||
int sayMuteTime;
|
||||
int sayTime; // Elder: say validation stuff
|
||||
int sayCount;
|
||||
int sayWarnings;
|
||||
int sayBans;
|
||||
int sayMuteTime;
|
||||
qboolean sayModerated; // so warnings are not repeated for multi-line, same-frame messages
|
||||
|
||||
int records[REC_NUM_RECORDS]; // Elder: for our statistics tracking
|
||||
int records[REC_NUM_RECORDS]; // Elder: for our statistics tracking
|
||||
} clientPersistant_t;
|
||||
|
||||
#ifdef __ZCAM__
|
||||
struct camera_s;
|
||||
#endif /* __ZCAM__ */
|
||||
|
||||
// Elder: spam prevention defaults
|
||||
/*
|
||||
|
@ -441,155 +407,106 @@ typedef enum
|
|||
// except for 'client->pers' and 'client->sess'
|
||||
struct gclient_s {
|
||||
// ps MUST be the first element, because the server expects it
|
||||
playerState_t ps; // communicated by server to clients
|
||||
|
||||
playerState_t ps; // communicated by server to clients
|
||||
// the rest of the structure is private to game
|
||||
clientPersistant_t pers;
|
||||
clientSession_t sess;
|
||||
|
||||
qboolean readyToExit; // wishes to leave the intermission
|
||||
|
||||
qboolean noclip;
|
||||
|
||||
qboolean readyToExit; // wishes to leave the intermission
|
||||
qboolean noclip;
|
||||
int lastCmdTime; // level.time of last usercmd_t, for EF_CONNECTION
|
||||
// we can't just use pers.lastCommand.time, because
|
||||
// of the g_sycronousclients case
|
||||
// we can't just use pers.lastCommand.time, because
|
||||
// of the g_sycronousclients case
|
||||
int buttons;
|
||||
int oldbuttons;
|
||||
int latched_buttons;
|
||||
|
||||
vec3_t oldOrigin;
|
||||
|
||||
vec3_t oldOrigin;
|
||||
// sum up damage over an entire frame, so
|
||||
// shotgun blasts give a single big kick
|
||||
int damage_armor; // damage absorbed by armor
|
||||
int damage_blood; // damage taken out of health
|
||||
int damage_knockback; // impact damage
|
||||
vec3_t damage_from; // origin for vector calculation
|
||||
qboolean damage_fromWorld; // if true, don't use the damage_from vector
|
||||
//qboolean damage_vest; // Elder: if true, play the vest-hit sound
|
||||
|
||||
vec3_t damage_from; // origin for vector calculation
|
||||
qboolean damage_fromWorld; // if true, don't use the damage_from vector
|
||||
//qboolean damage_vest; // Elder: if true, play the vest-hit sound
|
||||
int accurateCount; // for "impressive" reward sound
|
||||
|
||||
int accuracy_shots; // total number of shots
|
||||
int accuracy_hits; // total number of hits
|
||||
//Blaze: For weapon stats
|
||||
//Will need to pass these along in g_client to the new client after spawn
|
||||
// Elder: to be merged into rq3Record_t for more comprehensive tracking
|
||||
/*
|
||||
int knifeShots;
|
||||
int knifeHits;
|
||||
int mk23Shots;
|
||||
int mk23Hits;
|
||||
int m4Shots;
|
||||
int m4Hits;
|
||||
int mp5Shots;
|
||||
int mp5Hits;
|
||||
int m3Shots;
|
||||
int m3Hits;
|
||||
int hcShots;
|
||||
int hcHits;
|
||||
int ssgShots;
|
||||
int ssgHits;
|
||||
int akimboShots;
|
||||
int akimboHits;
|
||||
int grenShots;
|
||||
int grenHits;
|
||||
*/
|
||||
|
||||
// int lastkilled_client; // last client that this client killed
|
||||
gentity_t *lastkilled_client[5]; // JBravo: last 5 clients that this client killed
|
||||
int num_kills; // JBravo: Number of killed players in TP.
|
||||
int lasthurt_client; // last client that damaged this client
|
||||
int lasthurt_mod; // type of damage the client did
|
||||
//Slicer
|
||||
int weapon_attempts;
|
||||
qboolean weapon_after_bandage_warned;
|
||||
|
||||
qboolean weapon_after_bandage_warned;
|
||||
// Begin Duffman
|
||||
int lasthurt_location; // Where the client was hit.
|
||||
int lasthurt_location; // Where the client was hit.
|
||||
// End Duffman
|
||||
|
||||
// timers
|
||||
int respawnTime; // can respawn when time > this, force after g_forcerespwan
|
||||
int inactivityTime; // kick players when time > this
|
||||
qboolean inactivityWarning; // qtrue if the five seoond warning has been given
|
||||
int rewardTime; // clear the EF_AWARD_IMPRESSIVE, etc when time > this
|
||||
|
||||
qboolean inactivityWarning; // qtrue if the five seoond warning has been given
|
||||
int rewardTime; // clear the EF_AWARD_IMPRESSIVE, etc when time > this
|
||||
int airOutTime;
|
||||
|
||||
int lastKillTime; // for multiple kill rewards
|
||||
|
||||
qboolean fireHeld; // used for hook
|
||||
gentity_t *hook; // grapple hook if out
|
||||
|
||||
int switchTeamTime; // time the player switched teams
|
||||
qboolean fireHeld; // used for hook
|
||||
gentity_t *hook; // grapple hook if out
|
||||
int switchTeamTime; // time the player switched teams
|
||||
// Begin Duffman
|
||||
int numClips[MAX_WEAPONS]; // Number of clips each weapon has
|
||||
int numClips[MAX_WEAPONS]; // Number of clips each weapon has
|
||||
// End Duffman
|
||||
int weaponCount[WP_NUM_WEAPONS]; // Elder: for duplicate unique weapon tracking
|
||||
|
||||
int openDoor; //Blaze: used to hold if someone has hit opendoor key
|
||||
int openDoor; //Blaze: used to hold if someone has hit opendoor key
|
||||
int openDoorTime;
|
||||
|
||||
// timeResidual is used to handle events that happen every second
|
||||
// like health / armor countdowns and regeneration
|
||||
int timeResidual;
|
||||
|
||||
//Elder: C3A laser tutorial
|
||||
gentity_t *lasersight; // lasersight OR flashlight if in use
|
||||
|
||||
gentity_t *lasersight; // lasersight OR flashlight if in use
|
||||
// Bleeding server-only cvars
|
||||
int bleeding; // Blaze: remaining points to bleed away
|
||||
int bleeding; // Blaze: remaining points to bleed away
|
||||
int bleed_remain; // Blaze: How much left to bleed
|
||||
int bleedloc; // Blaze: Where are we bleeding
|
||||
vec3_t bleedloc_offset; // Blaze: location of bleeding (from origin)
|
||||
int bleedloc; // Blaze: Where are we bleeding
|
||||
vec3_t bleedloc_offset; // Blaze: location of bleeding (from origin)
|
||||
int bleed_delay; // Elder: time for next spurt of blood
|
||||
vec3_t bleednorm;
|
||||
//qboolean isBleeding; // Blaze: is client bleeding
|
||||
// int legDamage; // Blaze: Client has leg damage - holds number of hits too
|
||||
int bleedtick; // Blaze: Holds # of seconds till bleeding stops.
|
||||
vec3_t bleednorm;
|
||||
//qboolean isBleeding; // Blaze: is client bleeding
|
||||
// int legDamage; // Blaze: Client has leg damage - holds number of hits too
|
||||
int bleedtick; // Blaze: Holds # of seconds till bleeding stops.
|
||||
int bleedBandageCount; // Elder: hack to restrict amount of bleeding to 3 points
|
||||
int headShotTime; // Elder: got headshot?
|
||||
|
||||
//Elder: server only needs to know for sniper spread - ARGH
|
||||
// int zoomed; // Hawkins (SSG zoom)
|
||||
//qboolean semi; // hawkins (semiauto mode for m4, mp5, pistol)
|
||||
int shots; // Blaze: Number of shots fired so far with this weapon
|
||||
|
||||
int weaponfireNextTime; // for akimbos
|
||||
int lastzoom; // Elder: save last zoom state when firing
|
||||
|
||||
// int zoomed; // Hawkins (SSG zoom)
|
||||
//qboolean semi; // hawkins (semiauto mode for m4, mp5, pistol)
|
||||
int shots; // Blaze: Number of shots fired so far with this weapon
|
||||
int weaponfireNextTime; // for akimbos
|
||||
int lastzoom; // Elder: save last zoom state when firing
|
||||
// These are now obsolete with the new reload code
|
||||
int fastReloads; // Elder: for queuing M3/SSG reloads
|
||||
int lastReloadTime; // Elder: for queuing M3/SSG reloads
|
||||
int reloadAttempts; // Elder: for queuing M3/SSG reloads
|
||||
int reloadStage; // Elder: 0, 1, 2 for sound queuing - move to stats?
|
||||
|
||||
int consecutiveShots; // Elder: for M4 ride-up/kick
|
||||
int uniqueWeapons; // Elder: formerly a stat, now just a server var
|
||||
int fastReloads; // Elder: for queuing M3/SSG reloads
|
||||
int lastReloadTime; // Elder: for queuing M3/SSG reloads
|
||||
int reloadAttempts; // Elder: for queuing M3/SSG reloads
|
||||
int reloadStage; // Elder: 0, 1, 2 for sound queuing - move to stats?
|
||||
int consecutiveShots; // Elder: for M4 ride-up/kick
|
||||
int uniqueWeapons; // Elder: formerly a stat, now just a server var
|
||||
int uniqueItems;
|
||||
int killStreak; // Elder: replaces the old STAT_STREAK
|
||||
qboolean kevlarHit; // Elder: kevlar hit -- FIXME: poor implementation
|
||||
int knife_sound; // NiceAss: What did the player hit while slashing?
|
||||
int killStreak; // Elder: replaces the old STAT_STREAK
|
||||
qboolean kevlarHit; // Elder: kevlar hit -- FIXME: poor implementation
|
||||
int knife_sound; // NiceAss: What did the player hit while slashing?
|
||||
|
||||
#ifdef MISSIONPACK
|
||||
gentity_t *persistantPowerup;
|
||||
gentity_t *persistantPowerup;
|
||||
int portalID;
|
||||
int ammoTimes[WP_NUM_WEAPONS];
|
||||
int invulnerabilityTime;
|
||||
#endif
|
||||
|
||||
char *areabits;
|
||||
#ifdef __ZCAM__
|
||||
struct camera_s *camera;
|
||||
#endif /* __ZCAM__ */
|
||||
char *areabits;
|
||||
struct camera_s *camera;
|
||||
// JBravo adding TP stuff
|
||||
int specMode;
|
||||
int teamplayWeapon;
|
||||
int teamplayItem;
|
||||
int radioGender;
|
||||
qboolean radioOff;
|
||||
int specMode;
|
||||
int teamplayWeapon;
|
||||
int teamplayItem;
|
||||
int radioGender;
|
||||
qboolean radioOff;
|
||||
};
|
||||
|
||||
|
||||
|
@ -603,109 +520,96 @@ struct gclient_s {
|
|||
//
|
||||
// this structure is cleared as each map is entered
|
||||
//
|
||||
#define MAX_SPAWN_VARS 64
|
||||
#define MAX_SPAWN_VARS 64
|
||||
#define MAX_SPAWN_VARS_CHARS 4096
|
||||
|
||||
typedef struct {
|
||||
struct gclient_s *clients; // [maxclients]
|
||||
|
||||
struct gentity_s *gentities;
|
||||
int gentitySize;
|
||||
int num_entities; // current number, <= MAX_GENTITIES
|
||||
|
||||
int warmupTime; // restart match at this time
|
||||
|
||||
fileHandle_t logFile;
|
||||
|
||||
int warmupTime; // restart match at this time
|
||||
fileHandle_t logFile;
|
||||
// store latched cvars here that we want to get at often
|
||||
int maxclients;
|
||||
|
||||
int framenum;
|
||||
int time; // in msec
|
||||
int previousTime; // so movers can back up when blocked
|
||||
|
||||
int startTime; // level.time the map was started
|
||||
|
||||
int time; // in msec
|
||||
int previousTime; // so movers can back up when blocked
|
||||
int startTime; // level.time the map was started
|
||||
int teamScores[TEAM_NUM_TEAMS];
|
||||
int lastTeamLocationTime; // last time of client team location update
|
||||
|
||||
qboolean newSession; // don't use any old session data, because
|
||||
// we changed gametype
|
||||
|
||||
qboolean restarted; // waiting for a map_restart to fire
|
||||
|
||||
int lastTeamLocationTime; // last time of client team location update
|
||||
qboolean newSession; // don't use any old session data, because
|
||||
// we changed gametype
|
||||
qboolean restarted; // waiting for a map_restart to fire
|
||||
int numConnectedClients;
|
||||
int numNonSpectatorClients; // includes connecting clients
|
||||
int numPlayingClients; // connected, non-spectators
|
||||
int sortedClients[MAX_CLIENTS]; // sorted by score
|
||||
int follow1, follow2; // clientNums for auto-follow spectators
|
||||
|
||||
int snd_fry; // sound index for standing in lava
|
||||
|
||||
int numPlayingClients; // connected, non-spectators
|
||||
int sortedClients[MAX_CLIENTS]; // sorted by score
|
||||
int follow1, follow2; // clientNums for auto-follow spectators
|
||||
int snd_fry; // sound index for standing in lava
|
||||
int warmupModificationCount; // for detecting if g_warmup is changed
|
||||
|
||||
// voting state
|
||||
char voteString[MAX_STRING_CHARS];
|
||||
char voteDisplayString[MAX_STRING_CHARS];
|
||||
int voteTime; // level.time vote was called
|
||||
int voteExecuteTime; // time the vote is executed
|
||||
char voteString[MAX_STRING_CHARS];
|
||||
char voteDisplayString[MAX_STRING_CHARS];
|
||||
int voteTime; // level.time vote was called
|
||||
int voteExecuteTime; // time the vote is executed
|
||||
int voteYes;
|
||||
int voteNo;
|
||||
int numVotingClients; // set by CalculateRanks
|
||||
int numVotingClients; // set by CalculateRanks
|
||||
|
||||
// team voting state
|
||||
char teamVoteString[2][MAX_STRING_CHARS];
|
||||
int teamVoteTime[2]; // level.time vote was called
|
||||
char teamVoteString[2][MAX_STRING_CHARS];
|
||||
int teamVoteTime[2]; // level.time vote was called
|
||||
int teamVoteYes[2];
|
||||
int teamVoteNo[2];
|
||||
int numteamVotingClients[2];// set by CalculateRanks
|
||||
|
||||
// spawn variables
|
||||
qboolean spawning; // the G_Spawn*() functions are valid
|
||||
qboolean spawning; // the G_Spawn*() functions are valid
|
||||
int numSpawnVars;
|
||||
char *spawnVars[MAX_SPAWN_VARS][2]; // key / value pairs
|
||||
char *spawnVars[MAX_SPAWN_VARS][2]; // key / value pairs
|
||||
int numSpawnVarChars;
|
||||
char spawnVarChars[MAX_SPAWN_VARS_CHARS];
|
||||
char spawnVarChars[MAX_SPAWN_VARS_CHARS];
|
||||
|
||||
// intermission state
|
||||
int intermissionQueued; // intermission was qualified, but
|
||||
// wait INTERMISSION_DELAY_TIME before
|
||||
// actually going there so the last
|
||||
// frag can be watched. Disable future
|
||||
// kills during this delay
|
||||
int intermissiontime; // time the intermission was started
|
||||
char *changemap;
|
||||
qboolean readyToExit; // at least one client wants to exit
|
||||
int intermissionQueued; // intermission was qualified, but
|
||||
// wait INTERMISSION_DELAY_TIME before
|
||||
// actually going there so the last
|
||||
// frag can be watched. Disable future
|
||||
// kills during this delay
|
||||
int intermissiontime; // time the intermission was started
|
||||
char *changemap;
|
||||
qboolean readyToExit; // at least one client wants to exit
|
||||
int exitTime;
|
||||
vec3_t intermission_origin; // also used for spectator spawns
|
||||
vec3_t intermission_angle;
|
||||
vec3_t intermission_origin; // also used for spectator spawns
|
||||
vec3_t intermission_angle;
|
||||
|
||||
qboolean locationLinked; // target_locations get linked
|
||||
gentity_t *locationHead; // head of the location list
|
||||
int bodyQueIndex; // dead bodies
|
||||
gentity_t *bodyQue[BODY_QUEUE_SIZE];
|
||||
qboolean locationLinked; // target_locations get linked
|
||||
gentity_t *locationHead; // head of the location list
|
||||
int bodyQueIndex; // dead bodies
|
||||
gentity_t *bodyQue[BODY_QUEUE_SIZE];
|
||||
#ifdef MISSIONPACK
|
||||
int portalSequence;
|
||||
#endif
|
||||
// Slicer: Matchmode
|
||||
float matchTime;
|
||||
qboolean inGame;
|
||||
float matchTime;
|
||||
qboolean inGame;
|
||||
// JBravo adding TP
|
||||
int lights_camera_action;
|
||||
qboolean team_round_going;
|
||||
int holding_on_tie_check;
|
||||
int team_round_countdown;
|
||||
qboolean team_game_going;
|
||||
int rulecheckfrequency;
|
||||
int current_round_length;
|
||||
qboolean spawnPointsLocated;
|
||||
gentity_t *team1spawnpoint;
|
||||
gentity_t *team2spawnpoint;
|
||||
vec3_t team1spawn_origin;
|
||||
vec3_t team1spawn_angles;
|
||||
vec3_t team2spawn_origin;
|
||||
vec3_t team2spawn_angles;
|
||||
int fps;
|
||||
int lights_camera_action;
|
||||
qboolean team_round_going;
|
||||
int holding_on_tie_check;
|
||||
int team_round_countdown;
|
||||
qboolean team_game_going;
|
||||
int rulecheckfrequency;
|
||||
int current_round_length;
|
||||
qboolean spawnPointsLocated;
|
||||
gentity_t *team1spawnpoint;
|
||||
gentity_t *team2spawnpoint;
|
||||
vec3_t team1spawn_origin;
|
||||
vec3_t team1spawn_angles;
|
||||
vec3_t team2spawn_origin;
|
||||
vec3_t team2spawn_angles;
|
||||
int fps;
|
||||
} level_locals_t;
|
||||
//
|
||||
// rxn_game.c
|
||||
|
|
Loading…
Reference in a new issue