From 468c0073ee7c7bbd22539c272b01ae59740fb3df Mon Sep 17 00:00:00 2001 From: Richard Allen Date: Tue, 2 Apr 2002 00:56:18 +0000 Subject: [PATCH] Removed the zcam defines again and did some cleanups --- reaction/game/g_local.h | 490 ++++++++++++++++------------------------ 1 file changed, 197 insertions(+), 293 deletions(-) diff --git a/reaction/game/g_local.h b/reaction/game/g_local.h index 2ae27199..d1d62810 100644 --- a/reaction/game/g_local.h +++ b/reaction/game/g_local.h @@ -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