mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2025-01-22 09:31:11 +00:00
New multiple item code and added PB support to the UI
This commit is contained in:
parent
777b0e8431
commit
ac43ff162f
17 changed files with 244 additions and 76 deletions
Binary file not shown.
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.54 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.53 2002/06/23 23:32:29 jbravo
|
// Revision 1.53 2002/06/23 23:32:29 jbravo
|
||||||
// Fixed logging of clients IP addresses.
|
// Fixed logging of clients IP addresses.
|
||||||
//
|
//
|
||||||
|
@ -585,7 +588,7 @@ static void CG_IRVision_f(void)
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_BANDOLIER) {
|
if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER)) {
|
||||||
CG_Printf(va("IR vision %s.\n", status));
|
CG_Printf(va("IR vision %s.\n", status));
|
||||||
} else {
|
} else {
|
||||||
CG_Printf(va("IR vision will be %s next time you get a bandolier.\n", status));
|
CG_Printf(va("IR vision will be %s next time you get a bandolier.\n", status));
|
||||||
|
@ -757,4 +760,5 @@ void CG_InitConsoleCommands(void)
|
||||||
trap_AddCommand("reflogin");
|
trap_AddCommand("reflogin");
|
||||||
trap_AddCommand("ref");
|
trap_AddCommand("ref");
|
||||||
trap_AddCommand("refresign");
|
trap_AddCommand("refresign");
|
||||||
|
trap_AddCommand("debugshit");
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.67 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.66 2002/08/30 06:23:57 niceass
|
// Revision 1.66 2002/08/30 06:23:57 niceass
|
||||||
// disabled wallhack protection #2!!!
|
// disabled wallhack protection #2!!!
|
||||||
//
|
//
|
||||||
|
@ -1359,15 +1362,27 @@ CG_DrawHoldableItem
|
||||||
*/
|
*/
|
||||||
static void CG_DrawHoldableItem(void)
|
static void CG_DrawHoldableItem(void)
|
||||||
{
|
{
|
||||||
int value;
|
int value, item;
|
||||||
|
|
||||||
value = cg.snap->ps.stats[STAT_HOLDABLE_ITEM];
|
item = 0;
|
||||||
if (value) {
|
// JBravo: new items code. The order here is the same as in g_active so you
|
||||||
|
// drop the same item that you see on your HUD.
|
||||||
|
if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER))
|
||||||
|
item = HI_BANDOLIER;
|
||||||
|
else if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS))
|
||||||
|
item = HI_SLIPPERS;
|
||||||
|
else if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER))
|
||||||
|
item = HI_SILENCER;
|
||||||
|
else if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER))
|
||||||
|
item = HI_LASER;
|
||||||
|
else if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_KEVLAR))
|
||||||
|
item = HI_KEVLAR;
|
||||||
|
|
||||||
|
if (item) {
|
||||||
|
value = BG_FindItemForHoldable(item) - bg_itemlist;
|
||||||
CG_RegisterItemVisuals(value);
|
CG_RegisterItemVisuals(value);
|
||||||
//CG_DrawPic( 640-ICON_SIZE, (SCREEN_HEIGHT-ICON_SIZE)/2, ICON_SIZE, ICON_SIZE, cg_items[ value ].icon );
|
|
||||||
CG_DrawPic(640 - SMICON_SIZE, 440, SMICON_SIZE, SMICON_SIZE, cg_items[value].icon);
|
CG_DrawPic(640 - SMICON_SIZE, 440, SMICON_SIZE, SMICON_SIZE, cg_items[value].icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.54 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.53 2002/09/29 16:06:44 jbravo
|
// Revision 1.53 2002/09/29 16:06:44 jbravo
|
||||||
// Work done at the HPWorld expo
|
// Work done at the HPWorld expo
|
||||||
//
|
//
|
||||||
|
@ -2428,7 +2431,7 @@ void CG_AddRefEntityWithPowerups(refEntity_t * ent, entityState_t * state, int t
|
||||||
|
|
||||||
//Elder: IR Vision -- only on players that are alive
|
//Elder: IR Vision -- only on players that are alive
|
||||||
if (state->eType == ET_PLAYER) {
|
if (state->eType == ET_PLAYER) {
|
||||||
if (bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_BANDOLIER &&
|
if ((cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER)) &&
|
||||||
cg.rq3_irvision && !(state->eFlags & EF_DEAD)) {
|
cg.rq3_irvision && !(state->eFlags & EF_DEAD)) {
|
||||||
ent->customShader = cgs.media.irPlayerShader;
|
ent->customShader = cgs.media.irPlayerShader;
|
||||||
trap_R_AddRefEntityToScene(ent);
|
trap_R_AddRefEntityToScene(ent);
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.98 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.97 2002/10/20 21:24:32 blaze
|
// Revision 1.97 2002/10/20 21:24:32 blaze
|
||||||
// Added cg_rq3_gunname cvars. These can be used to choose weapon replacements. You will need 3 icons that I will upload to the ftp. These should go in the next pk3
|
// Added cg_rq3_gunname cvars. These can be used to choose weapon replacements. You will need 3 icons that I will upload to the ftp. These should go in the next pk3
|
||||||
//
|
//
|
||||||
|
@ -818,7 +821,7 @@ void CG_RegisterWeapon(int weaponNum)
|
||||||
char md3name[MAX_QPATH];
|
char md3name[MAX_QPATH];
|
||||||
char newname[MAX_QPATH];
|
char newname[MAX_QPATH];
|
||||||
char newicon[MAX_QPATH];
|
char newicon[MAX_QPATH];
|
||||||
char teststuff[MAX_QPATH];
|
// char teststuff[MAX_QPATH];
|
||||||
// END
|
// END
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
@ -1659,7 +1662,7 @@ void CG_AddPlayerWeapon(refEntity_t * parent, playerState_t * ps, centity_t * ce
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//CG_LightningBolt( nonPredictedCent, parent->lightingOrigin );
|
//CG_LightningBolt( nonPredictedCent, parent->lightingOrigin );
|
||||||
if (ps && bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_SILENCER &&
|
if (ps && (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER)) &&
|
||||||
(weaponNum == WP_PISTOL || weaponNum == WP_MP5 || weaponNum == WP_SSG3000)) {
|
(weaponNum == WP_PISTOL || weaponNum == WP_MP5 || weaponNum == WP_SSG3000)) {
|
||||||
//Makro - wasn't initialized, caused a warning in MSVC
|
//Makro - wasn't initialized, caused a warning in MSVC
|
||||||
vec3_t silencerEnd;
|
vec3_t silencerEnd;
|
||||||
|
@ -1712,7 +1715,7 @@ void CG_AddPlayerWeapon(refEntity_t * parent, playerState_t * ps, centity_t * ce
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ps && bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER &&
|
if (ps && (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) &&
|
||||||
(weaponNum == WP_PISTOL || weaponNum == WP_MP5 || weaponNum == WP_M4)) {
|
(weaponNum == WP_PISTOL || weaponNum == WP_MP5 || weaponNum == WP_M4)) {
|
||||||
float scale = 0.0f;
|
float scale = 0.0f;
|
||||||
vec3_t angles;
|
vec3_t angles;
|
||||||
|
@ -3926,7 +3929,7 @@ void CG_Bullet(vec3_t end, int sourceEntityNum, vec3_t normal,
|
||||||
// Elder: only if not using SSG, check if this client is the source
|
// Elder: only if not using SSG, check if this client is the source
|
||||||
if (sourceEntityNum == cg.snap->ps.clientNum) {
|
if (sourceEntityNum == cg.snap->ps.clientNum) {
|
||||||
if (cg.snap->ps.weapon != WP_SSG3000 &&
|
if (cg.snap->ps.weapon != WP_SSG3000 &&
|
||||||
bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag != HI_SILENCER) {
|
(cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER))) {
|
||||||
if (random() < chance)
|
if (random() < chance)
|
||||||
CG_CreateTracer(sourceEntityNum, start, end);
|
CG_CreateTracer(sourceEntityNum, start, end);
|
||||||
}
|
}
|
||||||
|
@ -4023,7 +4026,7 @@ Broken until I find a way to lerp an entity without a cent
|
||||||
void CG_CheckLaser()
|
void CG_CheckLaser()
|
||||||
{
|
{
|
||||||
//Elder: check for local laser
|
//Elder: check for local laser
|
||||||
if (bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER &&
|
if ((cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) &&
|
||||||
cg_RQ3_laserAssist.integer &&
|
cg_RQ3_laserAssist.integer &&
|
||||||
(cg.snap->ps.weapon == WP_PISTOL || cg.snap->ps.weapon == WP_MP5 || cg.snap->ps.weapon == WP_M4)) {
|
(cg.snap->ps.weapon == WP_PISTOL || cg.snap->ps.weapon == WP_MP5 || cg.snap->ps.weapon == WP_M4)) {
|
||||||
CG_LocalLaser();
|
CG_LocalLaser();
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.45 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.44 2002/07/22 06:34:13 niceass
|
// Revision 1.44 2002/07/22 06:34:13 niceass
|
||||||
// cleaned up the powerup code
|
// cleaned up the powerup code
|
||||||
//
|
//
|
||||||
|
@ -928,9 +931,10 @@ qboolean BG_CanItemBeGrabbed(int gametype, const entityState_t * ent, const play
|
||||||
|
|
||||||
case IT_HOLDABLE:
|
case IT_HOLDABLE:
|
||||||
// can only hold one item at a time
|
// can only hold one item at a time
|
||||||
if (ps->stats[STAT_HOLDABLE_ITEM]) {
|
// JBravo: I beg to differ
|
||||||
|
/* if (ps->stats[STAT_HOLDABLE_ITEM]) {
|
||||||
return qfalse;
|
return qfalse;
|
||||||
}
|
} */
|
||||||
return qtrue;
|
return qtrue;
|
||||||
|
|
||||||
case IT_BAD:
|
case IT_BAD:
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.91 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.90 2002/09/08 23:25:09 niceass
|
// Revision 1.90 2002/09/08 23:25:09 niceass
|
||||||
// made cg_rq3_predictweapons even more like quake 2, and it's simpler
|
// made cg_rq3_predictweapons even more like quake 2, and it's simpler
|
||||||
//
|
//
|
||||||
|
@ -1135,7 +1138,8 @@ static void PM_CrashLand(void)
|
||||||
//Blaze lots of changes to make it more like aq2
|
//Blaze lots of changes to make it more like aq2
|
||||||
// this is a pain grunt, so don't play it if dead
|
// this is a pain grunt, so don't play it if dead
|
||||||
if (pm->ps->stats[STAT_HEALTH] > 0 && damage > 0) {
|
if (pm->ps->stats[STAT_HEALTH] > 0 && damage > 0) {
|
||||||
if (bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_SLIPPERS)
|
// JBravo: new multiple itemcode
|
||||||
|
if (pm->ps->stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS))
|
||||||
PM_AddEvent(EV_FALL_FAR_NOSOUND);
|
PM_AddEvent(EV_FALL_FAR_NOSOUND);
|
||||||
else
|
else
|
||||||
PM_AddEvent(EV_FALL_FAR);
|
PM_AddEvent(EV_FALL_FAR);
|
||||||
|
@ -1148,7 +1152,8 @@ static void PM_CrashLand(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (delta > 20) {
|
} else if (delta > 20) {
|
||||||
if (bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_SLIPPERS) {
|
// JBravo: new multiple itemcode
|
||||||
|
if (pm->ps->stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS)) {
|
||||||
PM_AddEvent(EV_FALL_SHORT_NOSOUND);
|
PM_AddEvent(EV_FALL_SHORT_NOSOUND);
|
||||||
//Elder: added? useful?
|
//Elder: added? useful?
|
||||||
pm->ps->stats[STAT_FALLDAMAGE] = 0;
|
pm->ps->stats[STAT_FALLDAMAGE] = 0;
|
||||||
|
@ -1157,7 +1162,8 @@ static void PM_CrashLand(void)
|
||||||
//Elder: added? useful?
|
//Elder: added? useful?
|
||||||
pm->ps->stats[STAT_FALLDAMAGE] = 0;
|
pm->ps->stats[STAT_FALLDAMAGE] = 0;
|
||||||
}
|
}
|
||||||
} else if (!(bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_SLIPPERS)) {
|
// JBravo: new multiple itemcode
|
||||||
|
} else if (!(pm->ps->stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS))) {
|
||||||
// Elder: don't spam sound events going up -- more like Q2 ladders as well
|
// Elder: don't spam sound events going up -- more like Q2 ladders as well
|
||||||
if (!pml.ladder || pm->ps->velocity[2] < 0)
|
if (!pml.ladder || pm->ps->velocity[2] < 0)
|
||||||
PM_AddEvent(PM_FootstepForSurface());
|
PM_AddEvent(PM_FootstepForSurface());
|
||||||
|
@ -1549,7 +1555,8 @@ static void PM_Footsteps(void)
|
||||||
//Elder: we can check for slippers here!
|
//Elder: we can check for slippers here!
|
||||||
// on ground will only play sounds if running
|
// on ground will only play sounds if running
|
||||||
if ((footstep && !pm->noFootsteps)
|
if ((footstep && !pm->noFootsteps)
|
||||||
&& !(bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_SLIPPERS)) {
|
// JBravo: new multiple itemcode
|
||||||
|
&& !(pm->ps->stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS))) {
|
||||||
PM_AddEvent(PM_FootstepForSurface());
|
PM_AddEvent(PM_FootstepForSurface());
|
||||||
}
|
}
|
||||||
} else if (pm->waterlevel == 1) {
|
} else if (pm->waterlevel == 1) {
|
||||||
|
@ -2472,7 +2479,8 @@ static void PM_Weapon(void)
|
||||||
// NiceAss: Check to see if this is game or cgame
|
// NiceAss: Check to see if this is game or cgame
|
||||||
//if (pm->predict) {
|
//if (pm->predict) {
|
||||||
//Elder: check for silencer
|
//Elder: check for silencer
|
||||||
if (bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_SILENCER &&
|
// JBravo: new multiple itemcode
|
||||||
|
if ((pm->ps->stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER)) &&
|
||||||
(pm->ps->weapon == WP_PISTOL || pm->ps->weapon == WP_MP5 || pm->ps->weapon == WP_SSG3000)) {
|
(pm->ps->weapon == WP_PISTOL || pm->ps->weapon == WP_MP5 || pm->ps->weapon == WP_SSG3000)) {
|
||||||
PM_AddEvent2(EV_FIRE_WEAPON, RQ3_WPMOD_SILENCER);
|
PM_AddEvent2(EV_FIRE_WEAPON, RQ3_WPMOD_SILENCER);
|
||||||
} else if (pm->ps->stats[STAT_BURST] > 1 && pm->ps->weapon == WP_KNIFE &&
|
} else if (pm->ps->stats[STAT_BURST] > 1 && pm->ps->weapon == WP_KNIFE &&
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.91 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.90 2002/09/29 16:06:44 jbravo
|
// Revision 1.90 2002/09/29 16:06:44 jbravo
|
||||||
// Work done at the HPWorld expo
|
// Work done at the HPWorld expo
|
||||||
//
|
//
|
||||||
|
@ -953,14 +956,48 @@ void ThrowItem(gentity_t * ent)
|
||||||
//itemonTime > 0 or itemonState == itemon_dropping? Or both?
|
//itemonTime > 0 or itemonState == itemon_dropping? Or both?
|
||||||
//item = 0;
|
//item = 0;
|
||||||
|
|
||||||
|
// JBravo: New drop item code for multiple items.
|
||||||
if (client->uniqueItems > 0) {
|
if (client->uniqueItems > 0) {
|
||||||
item = bg_itemlist[client->ps.stats[STAT_HOLDABLE_ITEM]].giTag;
|
if (g_gametype.integer >= GT_TEAM) {
|
||||||
xr_item = BG_FindItemForHoldable(item);
|
if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << client->teamplayItem)) {
|
||||||
client->ps.stats[STAT_HOLDABLE_ITEM] = 0;
|
xr_item = BG_FindItemForHoldable(client->teamplayItem);
|
||||||
//Elder: Just going to re-use the dropWeapon function
|
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
|
||||||
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
|
xr_drop->count = -1;
|
||||||
xr_drop->count = -1; // XRAY FMJ 0 is already taken, -1 means no ammo
|
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << client->teamplayItem);
|
||||||
client->uniqueItems--;
|
client->uniqueItems--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER)) {
|
||||||
|
xr_item = BG_FindItemForHoldable(HI_BANDOLIER);
|
||||||
|
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
|
||||||
|
xr_drop->count = -1;
|
||||||
|
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << HI_BANDOLIER);
|
||||||
|
client->uniqueItems--;
|
||||||
|
} else if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS)) {
|
||||||
|
xr_item = BG_FindItemForHoldable(HI_SLIPPERS);
|
||||||
|
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
|
||||||
|
xr_drop->count = -1;
|
||||||
|
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << HI_SLIPPERS);
|
||||||
|
client->uniqueItems--;
|
||||||
|
} else if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER)) {
|
||||||
|
xr_item = BG_FindItemForHoldable(HI_SILENCER);
|
||||||
|
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
|
||||||
|
xr_drop->count = -1;
|
||||||
|
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << HI_SILENCER);
|
||||||
|
client->uniqueItems--;
|
||||||
|
} else if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) {
|
||||||
|
xr_item = BG_FindItemForHoldable(HI_LASER);
|
||||||
|
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
|
||||||
|
xr_drop->count = -1;
|
||||||
|
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << HI_LASER);
|
||||||
|
client->uniqueItems--;
|
||||||
|
} else if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_KEVLAR)) {
|
||||||
|
xr_item = BG_FindItemForHoldable(HI_KEVLAR);
|
||||||
|
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
|
||||||
|
xr_drop->count = -1;
|
||||||
|
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << HI_KEVLAR);
|
||||||
|
client->uniqueItems--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1464,7 +1501,8 @@ void ClientEndFrame(gentity_t * ent)
|
||||||
ent->client->openDoorTime = 0;
|
ent->client->openDoorTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER) {
|
// JBravo: multiple items
|
||||||
|
if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) {
|
||||||
//Try to turn the laser on if it's off
|
//Try to turn the laser on if it's off
|
||||||
if (ent->client->lasersight == NULL)
|
if (ent->client->lasersight == NULL)
|
||||||
Laser_Gen(ent, qtrue);
|
Laser_Gen(ent, qtrue);
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.172 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.171 2002/10/21 21:00:39 slicer
|
// Revision 1.171 2002/10/21 21:00:39 slicer
|
||||||
// New MM features and bug fixes
|
// New MM features and bug fixes
|
||||||
//
|
//
|
||||||
|
@ -722,6 +725,15 @@ void Cmd_Give_f(gentity_t * ent)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (give_all || Q_stricmp(name, "items") == 0) {
|
||||||
|
// JBravo: for the new items system
|
||||||
|
ent->client->ps.stats[STAT_HOLDABLE_ITEM] = (1 << HI_KEVLAR);
|
||||||
|
ent->client->ps.stats[STAT_HOLDABLE_ITEM] |= (1 << HI_LASER);
|
||||||
|
ent->client->ps.stats[STAT_HOLDABLE_ITEM] |= (1 << HI_SILENCER);
|
||||||
|
ent->client->ps.stats[STAT_HOLDABLE_ITEM] |= (1 << HI_BANDOLIER);
|
||||||
|
ent->client->ps.stats[STAT_HOLDABLE_ITEM] |= (1 << HI_SLIPPERS);
|
||||||
|
}
|
||||||
|
|
||||||
if (give_all || Q_stricmp(name, "ammo") == 0) {
|
if (give_all || Q_stricmp(name, "ammo") == 0) {
|
||||||
for (i = 0; i < MAX_WEAPONS; i++) {
|
for (i = 0; i < MAX_WEAPONS; i++) {
|
||||||
//Blaze: Give right amount of shots to each gun
|
//Blaze: Give right amount of shots to each gun
|
||||||
|
@ -754,6 +766,10 @@ void Cmd_Give_f(gentity_t * ent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RQ3_Cmd_debugshit (gentity_t * ent)
|
||||||
|
{
|
||||||
|
G_Printf("STAT_HOLDABLE_ITEM is %d, uniqueItems is %d\n", ent->client->ps.stats[STAT_HOLDABLE_ITEM], ent->client->uniqueItems);
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
==================
|
==================
|
||||||
Cmd_God_f
|
Cmd_God_f
|
||||||
|
@ -2581,7 +2597,8 @@ void Cmd_DropItem_f(gentity_t * ent)
|
||||||
|
|
||||||
if (ent->client->ps.stats[STAT_HOLDABLE_ITEM]) {
|
if (ent->client->ps.stats[STAT_HOLDABLE_ITEM]) {
|
||||||
//Elder: reset item totals if using bandolier
|
//Elder: reset item totals if using bandolier
|
||||||
if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_BANDOLIER) {
|
//JBravo: New multiple items code.
|
||||||
|
if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER)) {
|
||||||
if (ent->client->numClips[WP_SSG3000] > RQ3_SSG3000_EXTRA_AMMO)
|
if (ent->client->numClips[WP_SSG3000] > RQ3_SSG3000_EXTRA_AMMO)
|
||||||
ent->client->numClips[WP_SSG3000] = RQ3_SSG3000_EXTRA_AMMO;
|
ent->client->numClips[WP_SSG3000] = RQ3_SSG3000_EXTRA_AMMO;
|
||||||
if (ent->client->numClips[WP_M3] > RQ3_M3_EXTRA_AMMO)
|
if (ent->client->numClips[WP_M3] > RQ3_M3_EXTRA_AMMO)
|
||||||
|
@ -2604,7 +2621,7 @@ void Cmd_DropItem_f(gentity_t * ent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Force laser off
|
//Force laser off
|
||||||
else if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER)
|
else if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER))
|
||||||
Laser_Gen(ent, qfalse);
|
Laser_Gen(ent, qfalse);
|
||||||
ThrowItem(ent);
|
ThrowItem(ent);
|
||||||
}
|
}
|
||||||
|
@ -2857,6 +2874,8 @@ void ClientCommand(int clientNum)
|
||||||
// JBravo: adding tkok
|
// JBravo: adding tkok
|
||||||
else if (Q_stricmp(cmd, "tkok") == 0)
|
else if (Q_stricmp(cmd, "tkok") == 0)
|
||||||
RQ3_Cmd_TKOk(ent);
|
RQ3_Cmd_TKOk(ent);
|
||||||
|
else if (Q_stricmp(cmd, "debugshit") == 0)
|
||||||
|
RQ3_Cmd_debugshit(ent);
|
||||||
//Elder: stuff for dropping items
|
//Elder: stuff for dropping items
|
||||||
else if (Q_stricmp(cmd, "dropitem") == 0)
|
else if (Q_stricmp(cmd, "dropitem") == 0)
|
||||||
Cmd_DropItem_f(ent);
|
Cmd_DropItem_f(ent);
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.129 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.128 2002/10/04 20:52:39 jbravo
|
// Revision 1.128 2002/10/04 20:52:39 jbravo
|
||||||
// Think I finally have the mp5 damage right
|
// Think I finally have the mp5 damage right
|
||||||
//
|
//
|
||||||
|
@ -374,10 +377,9 @@ Toss the weapon and powerups for the killed player
|
||||||
*/
|
*/
|
||||||
void TossClientItems(gentity_t * self)
|
void TossClientItems(gentity_t * self)
|
||||||
{
|
{
|
||||||
gitem_t *item;
|
gitem_t *item, *dropitem;
|
||||||
int weapon;
|
int weapon, i;
|
||||||
float angle;
|
float angle;
|
||||||
int i;
|
|
||||||
gentity_t *drop;
|
gentity_t *drop;
|
||||||
|
|
||||||
//Elder: added
|
//Elder: added
|
||||||
|
@ -467,10 +469,15 @@ void TossClientItems(gentity_t * self)
|
||||||
angle += 30;
|
angle += 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self->client->ps.stats[STAT_HOLDABLE_ITEM]) {
|
// JBravo: drop all items in the new item system.
|
||||||
Drop_Item(self, &bg_itemlist[self->client->ps.stats[STAT_HOLDABLE_ITEM]], angle);
|
for (i = HI_NUM_HOLDABLE - 1; i > 0; i--) {
|
||||||
angle += 30;
|
if (self->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << i)) {
|
||||||
|
dropitem = BG_FindItemForHoldable(i);
|
||||||
|
Drop_Item(self, dropitem, angle);
|
||||||
|
angle += 30;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// drop all the powerups if not in teamplay
|
// drop all the powerups if not in teamplay
|
||||||
if (g_gametype.integer != GT_TEAM) {
|
if (g_gametype.integer != GT_TEAM) {
|
||||||
angle = 45;
|
angle = 45;
|
||||||
|
@ -2212,7 +2219,8 @@ void G_Damage(gentity_t * targ, gentity_t * inflictor, gentity_t * attacker,
|
||||||
// Vest stuff - is the knife supposed to be affected?
|
// Vest stuff - is the knife supposed to be affected?
|
||||||
// NiceAss: Added mod != MOD_KNIFE_THROWN so kevlar doesn't help against thrown knives
|
// NiceAss: Added mod != MOD_KNIFE_THROWN so kevlar doesn't help against thrown knives
|
||||||
// JBravo: added mod != MOD_KNIFE so kevlar doesn't help against slashing knives either
|
// JBravo: added mod != MOD_KNIFE so kevlar doesn't help against slashing knives either
|
||||||
if (bg_itemlist[targ->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_KEVLAR &&
|
// JBravo: the new itemscode.
|
||||||
|
if ((targ->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_KEVLAR)) &&
|
||||||
mod != MOD_KNIFE_THROWN && mod != MOD_KNIFE) {
|
mod != MOD_KNIFE_THROWN && mod != MOD_KNIFE) {
|
||||||
targ->client->kevlarHit = qtrue;
|
targ->client->kevlarHit = qtrue;
|
||||||
if (attacker->client->ps.weapon == WP_SSG3000) {
|
if (attacker->client->ps.weapon == WP_SSG3000) {
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.50 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.49 2002/09/29 16:06:44 jbravo
|
// Revision 1.49 2002/09/29 16:06:44 jbravo
|
||||||
// Work done at the HPWorld expo
|
// Work done at the HPWorld expo
|
||||||
//
|
//
|
||||||
|
@ -177,7 +180,8 @@ int Pickup_Holdable(gentity_t * ent, gentity_t * other)
|
||||||
{
|
{
|
||||||
//Elder: why it's implemented like this I have no idea
|
//Elder: why it's implemented like this I have no idea
|
||||||
//JBravo: Neiter do I :( Sucks Monks Nads this way :(
|
//JBravo: Neiter do I :( Sucks Monks Nads this way :(
|
||||||
other->client->ps.stats[STAT_HOLDABLE_ITEM] = ent->item - bg_itemlist;
|
//JBravo: Monks nads are safe now due to my new items code :)
|
||||||
|
other->client->ps.stats[STAT_HOLDABLE_ITEM] |= (1 << ent->item->giTag);
|
||||||
other->client->uniqueItems++;
|
other->client->uniqueItems++;
|
||||||
|
|
||||||
//Try to fire up the laser if it's picked up
|
//Try to fire up the laser if it's picked up
|
||||||
|
@ -517,7 +521,7 @@ void Touch_Item(gentity_t * ent, gentity_t * other, trace_t * trace)
|
||||||
|
|
||||||
predict = other->client->pers.predictItemPickup;
|
predict = other->client->pers.predictItemPickup;
|
||||||
|
|
||||||
if (bg_itemlist[other->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_BANDOLIER)
|
if (other->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER))
|
||||||
bandolierFactor = 2;
|
bandolierFactor = 2;
|
||||||
else
|
else
|
||||||
bandolierFactor = 1;
|
bandolierFactor = 1;
|
||||||
|
@ -644,8 +648,7 @@ void Touch_Item(gentity_t * ent, gentity_t * other, trace_t * trace)
|
||||||
break;
|
break;
|
||||||
case IT_HOLDABLE:
|
case IT_HOLDABLE:
|
||||||
//Elder: check to see if it's in mid-air
|
//Elder: check to see if it's in mid-air
|
||||||
if (other->client->uniqueItems >= 1 || //g_RQ3_maxWeapons.integer ||
|
if (other->client->uniqueItems >= g_RQ3_maxItems.integer || ent->s.pos.trDelta[2] != 0)
|
||||||
ent->s.pos.trDelta[2] != 0)
|
|
||||||
return;
|
return;
|
||||||
respawn = Pickup_Holdable(ent, other);
|
respawn = Pickup_Holdable(ent, other);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.127 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.126 2002/10/21 21:00:39 slicer
|
// Revision 1.126 2002/10/21 21:00:39 slicer
|
||||||
// New MM features and bug fixes
|
// New MM features and bug fixes
|
||||||
//
|
//
|
||||||
|
@ -1344,6 +1347,7 @@ extern vmCvar_t g_RQ3_mmflags;
|
||||||
//Blaze: Reaction cvars
|
//Blaze: Reaction cvars
|
||||||
extern vmCvar_t g_rxn_knifelimit;
|
extern vmCvar_t g_rxn_knifelimit;
|
||||||
extern vmCvar_t g_RQ3_maxWeapons;
|
extern vmCvar_t g_RQ3_maxWeapons;
|
||||||
|
extern vmCvar_t g_RQ3_maxItems;
|
||||||
extern vmCvar_t g_RQ3_statLog;
|
extern vmCvar_t g_RQ3_statLog;
|
||||||
extern vmCvar_t g_RQ3_ejectBlood;
|
extern vmCvar_t g_RQ3_ejectBlood;
|
||||||
extern vmCvar_t g_RQ3_respawnProtectTime;
|
extern vmCvar_t g_RQ3_respawnProtectTime;
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.122 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.121 2002/10/21 21:00:39 slicer
|
// Revision 1.121 2002/10/21 21:00:39 slicer
|
||||||
// New MM features and bug fixes
|
// New MM features and bug fixes
|
||||||
//
|
//
|
||||||
|
@ -412,6 +415,7 @@ vmCvar_t g_RQ3_mmflags;
|
||||||
//Blaze: Reaction cvars
|
//Blaze: Reaction cvars
|
||||||
vmCvar_t g_rxn_knifelimit;
|
vmCvar_t g_rxn_knifelimit;
|
||||||
vmCvar_t g_RQ3_maxWeapons;
|
vmCvar_t g_RQ3_maxWeapons;
|
||||||
|
vmCvar_t g_RQ3_maxItems;
|
||||||
vmCvar_t g_RQ3_statLog;
|
vmCvar_t g_RQ3_statLog;
|
||||||
vmCvar_t g_RQ3_ejectBlood;
|
vmCvar_t g_RQ3_ejectBlood;
|
||||||
vmCvar_t g_RQ3_respawnProtectTime;
|
vmCvar_t g_RQ3_respawnProtectTime;
|
||||||
|
@ -557,6 +561,7 @@ static cvarTable_t gameCvarTable[] = {
|
||||||
// Elder: these are explicit values set every time the game initializes
|
// Elder: these are explicit values set every time the game initializes
|
||||||
{&g_RQ3_ejectBlood, "g_RQ3_ejectBlood", "0", CVAR_ARCHIVE | CVAR_NORESTART, 0, qfalse},
|
{&g_RQ3_ejectBlood, "g_RQ3_ejectBlood", "0", CVAR_ARCHIVE | CVAR_NORESTART, 0, qfalse},
|
||||||
{&g_RQ3_maxWeapons, "g_RQ3_maxWeapons", "1", 0, 0, qtrue},
|
{&g_RQ3_maxWeapons, "g_RQ3_maxWeapons", "1", 0, 0, qtrue},
|
||||||
|
{&g_RQ3_maxItems, "g_RQ3_maxItems", "1", 0, 0, qtrue},
|
||||||
{&g_RQ3_respawnProtectTime, "g_RQ3_respawnProtectTime", "2", CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue},
|
{&g_RQ3_respawnProtectTime, "g_RQ3_respawnProtectTime", "2", CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue},
|
||||||
{&g_RQ3_statLog, "sv_RQ3_statLog", "1", CVAR_ARCHIVE | CVAR_SERVERINFO, 0, qfalse},
|
{&g_RQ3_statLog, "sv_RQ3_statLog", "1", CVAR_ARCHIVE | CVAR_SERVERINFO, 0, qfalse},
|
||||||
{&g_RQ3_messageMaxCount, "sv_RQ3_messageMaxCount", SAY_MAX_NUMBER, 0, 0, qfalse},
|
{&g_RQ3_messageMaxCount, "sv_RQ3_messageMaxCount", SAY_MAX_NUMBER, 0, 0, qfalse},
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.141 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.140 2002/10/21 21:00:39 slicer
|
// Revision 1.140 2002/10/21 21:00:39 slicer
|
||||||
// New MM features and bug fixes
|
// New MM features and bug fixes
|
||||||
//
|
//
|
||||||
|
@ -1254,8 +1257,7 @@ void EquipPlayer(gentity_t * ent)
|
||||||
ent->client->ps.weaponstate = WEAPON_RAISING;
|
ent->client->ps.weaponstate = WEAPON_RAISING;
|
||||||
|
|
||||||
if (ent->client->teamplayItem) {
|
if (ent->client->teamplayItem) {
|
||||||
ent->client->ps.stats[STAT_HOLDABLE_ITEM] =
|
ent->client->ps.stats[STAT_HOLDABLE_ITEM] = (1 << ent->client->teamplayItem);
|
||||||
BG_FindItemForHoldable(ent->client->teamplayItem) - bg_itemlist;
|
|
||||||
ent->client->uniqueItems = 1;
|
ent->client->uniqueItems = 1;
|
||||||
} else {
|
} else {
|
||||||
G_Printf("%s had an illegal teamplay item [%i]!\n", ent->client->pers.netname,
|
G_Printf("%s had an illegal teamplay item [%i]!\n", ent->client->pers.netname,
|
||||||
|
@ -1815,19 +1817,19 @@ void GetWeaponName(gentity_t * ent, char *buf)
|
||||||
|
|
||||||
void GetItemName(gentity_t * ent, char *buf)
|
void GetItemName(gentity_t * ent, char *buf)
|
||||||
{
|
{
|
||||||
if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_KEVLAR) {
|
if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_KEVLAR)) {
|
||||||
strcpy(buf, RQ3_KEVLAR_NAME);
|
strcpy(buf, RQ3_KEVLAR_NAME);
|
||||||
return;
|
return;
|
||||||
} else if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_SILENCER) {
|
} else if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER)) {
|
||||||
strcpy(buf, RQ3_SILENCER_NAME);
|
strcpy(buf, RQ3_SILENCER_NAME);
|
||||||
return;
|
return;
|
||||||
} else if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_SLIPPERS) {
|
} else if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS)) {
|
||||||
strcpy(buf, RQ3_SLIPPERS_NAME);
|
strcpy(buf, RQ3_SLIPPERS_NAME);
|
||||||
return;
|
return;
|
||||||
} else if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_BANDOLIER) {
|
} else if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER)) {
|
||||||
strcpy(buf, RQ3_BANDOLIER_NAME);
|
strcpy(buf, RQ3_BANDOLIER_NAME);
|
||||||
return;
|
return;
|
||||||
} else if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER) {
|
} else if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) {
|
||||||
strcpy(buf, RQ3_LASER_NAME);
|
strcpy(buf, RQ3_LASER_NAME);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.83 2002/10/26 00:37:18 jbravo
|
||||||
|
// New multiple item code and added PB support to the UI
|
||||||
|
//
|
||||||
// Revision 1.82 2002/09/24 05:06:17 blaze
|
// Revision 1.82 2002/09/24 05:06:17 blaze
|
||||||
// fixed spectating so ref\'s can now use all the chasecam modes.
|
// fixed spectating so ref\'s can now use all the chasecam modes.
|
||||||
//
|
//
|
||||||
|
@ -1148,7 +1151,7 @@ int RQ3_Spread(gentity_t * ent, int spread)
|
||||||
stage = 1;
|
stage = 1;
|
||||||
|
|
||||||
//added laser advantage
|
//added laser advantage
|
||||||
if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER &&
|
if ((ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) &&
|
||||||
(ent->client->ps.weapon == WP_PISTOL ||
|
(ent->client->ps.weapon == WP_PISTOL ||
|
||||||
ent->client->ps.weapon == WP_MP5 || ent->client->ps.weapon == WP_M4)) {
|
ent->client->ps.weapon == WP_MP5 || ent->client->ps.weapon == WP_M4)) {
|
||||||
//G_Printf("Using laser advantage\n");
|
//G_Printf("Using laser advantage\n");
|
||||||
|
|
|
@ -218,7 +218,7 @@
|
||||||
maxChars 32
|
maxChars 32
|
||||||
maxPaintChars 8
|
maxPaintChars 8
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 108 168 20
|
rect 212 98 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -236,7 +236,7 @@
|
||||||
text "Pure Server:"
|
text "Pure Server:"
|
||||||
cvar "sv_pure"
|
cvar "sv_pure"
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 128 168 20
|
rect 212 118 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -254,7 +254,7 @@
|
||||||
text "Auto Download:"
|
text "Auto Download:"
|
||||||
cvar "sv_allowdownload"
|
cvar "sv_allowdownload"
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 148 168 20
|
rect 212 138 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -272,7 +272,7 @@
|
||||||
text "Enable Voting:"
|
text "Enable Voting:"
|
||||||
cvar "g_allowvote"
|
cvar "g_allowvote"
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 168 168 20
|
rect 212 158 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -291,7 +291,7 @@
|
||||||
cvar "sv_maxclients"
|
cvar "sv_maxclients"
|
||||||
maxchars 4
|
maxchars 4
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 188 168 20
|
rect 212 178 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -310,7 +310,7 @@
|
||||||
cvar "sv_maxping"
|
cvar "sv_maxping"
|
||||||
maxchars 4
|
maxchars 4
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 208 168 20
|
rect 212 198 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -329,7 +329,7 @@
|
||||||
cvar "sv_minping"
|
cvar "sv_minping"
|
||||||
maxchars 4
|
maxchars 4
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 228 168 20
|
rect 212 218 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -348,7 +348,7 @@
|
||||||
cvar "sv_maxrate"
|
cvar "sv_maxrate"
|
||||||
maxchars 5
|
maxchars 5
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 248 168 20
|
rect 212 238 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -367,7 +367,7 @@
|
||||||
cvar "sv_reconnectlimit"
|
cvar "sv_reconnectlimit"
|
||||||
maxchars 4
|
maxchars 4
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 268 168 20
|
rect 212 258 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -385,7 +385,7 @@
|
||||||
text "Synchronous Client:"
|
text "Synchronous Client:"
|
||||||
cvar "g_synchronousclients"
|
cvar "g_synchronousclients"
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 288 168 20
|
rect 212 278 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -403,7 +403,7 @@
|
||||||
text "Require Password:"
|
text "Require Password:"
|
||||||
cvar "g_needpassword"
|
cvar "g_needpassword"
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 308 168 20
|
rect 212 298 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -423,7 +423,7 @@
|
||||||
maxChars 32
|
maxChars 32
|
||||||
maxPaintChars 8
|
maxPaintChars 8
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 328 168 20
|
rect 212 318 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -442,7 +442,7 @@
|
||||||
cvar "ui_dedicated"
|
cvar "ui_dedicated"
|
||||||
cvarFloatList { "No" 0 "LAN" 1 "Internet" 2 }
|
cvarFloatList { "No" 0 "LAN" 1 "Internet" 2 }
|
||||||
textstyle ITEM_TEXTSTYLE_SHADOWED
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
rect 212 348 168 20
|
rect 212 338 168 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 100
|
textalignx 100
|
||||||
textaligny 14
|
textaligny 14
|
||||||
|
@ -455,7 +455,7 @@
|
||||||
|
|
||||||
itemdef {
|
itemdef {
|
||||||
name global
|
name global
|
||||||
rect 212 368 168 20
|
rect 212 358 168 20
|
||||||
style WINDOW_STYLE_EMPTY
|
style WINDOW_STYLE_EMPTY
|
||||||
ownerdraw UI_NETGAMETYPE
|
ownerdraw UI_NETGAMETYPE
|
||||||
text "Game Type:"
|
text "Game Type:"
|
||||||
|
@ -469,6 +469,24 @@
|
||||||
action { play "sound/misc/menu1.wav" }
|
action { play "sound/misc/menu1.wav" }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Punkbuster
|
||||||
|
|
||||||
|
itemdef {
|
||||||
|
name global
|
||||||
|
style WINDOW_STYLE_EMPTY
|
||||||
|
type ITEM_TYPE_YESNO
|
||||||
|
text "Punkbuster enabled:"
|
||||||
|
cvar "sv_punkbuster"
|
||||||
|
textstyle ITEM_TEXTSTYLE_SHADOWED
|
||||||
|
rect 212 378 168 20
|
||||||
|
textalign ITEM_ALIGN_RIGHT
|
||||||
|
textalignx 100
|
||||||
|
textaligny 14
|
||||||
|
textscale .225
|
||||||
|
forecolor 1 1 1 1
|
||||||
|
visible 1
|
||||||
|
}
|
||||||
|
|
||||||
//Window
|
//Window
|
||||||
|
|
||||||
itemdef {
|
itemdef {
|
||||||
|
|
|
@ -237,7 +237,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Low quality sky:"
|
text "Low quality sky:"
|
||||||
cvar "r_fastsky"
|
cvar "r_fastsky"
|
||||||
rect 56 120 256 20
|
rect 56 118 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -271,7 +271,7 @@
|
||||||
text "Ejecting Brass:"
|
text "Ejecting Brass:"
|
||||||
cvar "cg_brassTime"
|
cvar "cg_brassTime"
|
||||||
cvarFloatList { "High" 2500 "Med" 1250 "Off" 0 }
|
cvarFloatList { "High" 2500 "Med" 1250 "Off" 0 }
|
||||||
rect 56 140 256 20
|
rect 56 136 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -304,7 +304,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Wall marks:"
|
text "Wall marks:"
|
||||||
cvar "cg_marks"
|
cvar "cg_marks"
|
||||||
rect 56 160 256 20
|
rect 56 154 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -337,7 +337,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Dynamic lights:"
|
text "Dynamic lights:"
|
||||||
cvar "r_dynamiclight"
|
cvar "r_dynamiclight"
|
||||||
rect 56 180 256 20
|
rect 56 172 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -370,7 +370,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Identify Target:"
|
text "Identify Target:"
|
||||||
cvar "cg_drawCrosshairNames"
|
cvar "cg_drawCrosshairNames"
|
||||||
rect 56 200 256 20
|
rect 56 190 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -403,7 +403,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Sync Every Frame:"
|
text "Sync Every Frame:"
|
||||||
cvar "r_finish"
|
cvar "r_finish"
|
||||||
rect 56 220 256 20
|
rect 56 208 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -436,7 +436,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Force Player Models:"
|
text "Force Player Models:"
|
||||||
cvar "cg_forceModel"
|
cvar "cg_forceModel"
|
||||||
rect 56 240 256 20
|
rect 56 226 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -469,7 +469,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Draw Team Overlay:"
|
text "Draw Team Overlay:"
|
||||||
cvar "cg_drawTeamOverlay"
|
cvar "cg_drawTeamOverlay"
|
||||||
rect 56 260 256 20
|
rect 56 244 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -502,7 +502,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Allow Download:"
|
text "Allow Download:"
|
||||||
cvar "cl_allowDownload"
|
cvar "cl_allowDownload"
|
||||||
rect 56 280 256 20
|
rect 56 262 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -535,7 +535,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Muzzle Flash:"
|
text "Muzzle Flash:"
|
||||||
cvar "cg_RQ3_flash"
|
cvar "cg_RQ3_flash"
|
||||||
rect 56 300 256 20
|
rect 56 280 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -568,7 +568,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Pain Blends:"
|
text "Pain Blends:"
|
||||||
cvar "cg_RQ3_painBlend"
|
cvar "cg_RQ3_painBlend"
|
||||||
rect 56 320 256 20
|
rect 56 298 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -601,7 +601,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Announcer:"
|
text "Announcer:"
|
||||||
cvar "cg_RQ3_announcer"
|
cvar "cg_RQ3_announcer"
|
||||||
rect 56 340 256 20
|
rect 56 316 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -634,7 +634,7 @@
|
||||||
type ITEM_TYPE_YESNO
|
type ITEM_TYPE_YESNO
|
||||||
text "Impact Effects:"
|
text "Impact Effects:"
|
||||||
cvar "cg_RQ3_impactEffects"
|
cvar "cg_RQ3_impactEffects"
|
||||||
rect 56 360 256 20
|
rect 56 334 256 20
|
||||||
textalign ITEM_ALIGN_RIGHT
|
textalign ITEM_ALIGN_RIGHT
|
||||||
textalignx 144
|
textalignx 144
|
||||||
textaligny 20
|
textaligny 20
|
||||||
|
@ -660,6 +660,37 @@
|
||||||
decoration
|
decoration
|
||||||
}
|
}
|
||||||
|
|
||||||
|
itemdef {
|
||||||
|
name opt_punkbuster
|
||||||
|
type ITEM_TYPE_YESNO
|
||||||
|
text "Punkbuster Enabled:"
|
||||||
|
cvar "cl_punkbuster"
|
||||||
|
rect 56 352 256 20
|
||||||
|
textalign ITEM_ALIGN_RIGHT
|
||||||
|
textalignx 144
|
||||||
|
textaligny 20
|
||||||
|
textscale .25
|
||||||
|
forecolor RQ3_Option_Color
|
||||||
|
visible 1
|
||||||
|
onFocus { show hint_punkbuster ; timeFade hint_punkbuster forecolor .9 .9 .9 1 0 250 }
|
||||||
|
leaveFocus { timeFade hint_punkbuster forecolor .9 .9 .9 0 0 250 }
|
||||||
|
}
|
||||||
|
|
||||||
|
itemdef {
|
||||||
|
name hint_punkbuster
|
||||||
|
text "Enable or Disable client side Punkbuster (Restart is needed)"
|
||||||
|
forecolor RQ3_MAIN_HINT_COLOR
|
||||||
|
textalign 1
|
||||||
|
textalignx 240
|
||||||
|
textaligny 20
|
||||||
|
textscale RQ3_MAIN_TEXTSIZE
|
||||||
|
rect 80 420 480 40
|
||||||
|
type 0
|
||||||
|
style 0
|
||||||
|
visible 0
|
||||||
|
decoration
|
||||||
|
}
|
||||||
|
|
||||||
//Page 2
|
//Page 2
|
||||||
|
|
||||||
//Crosshair
|
//Crosshair
|
||||||
|
@ -941,4 +972,4 @@
|
||||||
decoration
|
decoration
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue