mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2025-02-16 17:12:17 +00:00
Elder:
Sync with VM 0-04-00 release Fixes a ton of stuff, adds some new goodies CGame Component
This commit is contained in:
parent
732f73a910
commit
231ffd675d
11 changed files with 547 additions and 228 deletions
|
@ -46,8 +46,7 @@ static void CG_DropWeapon_f (void) {
|
|||
return;
|
||||
}
|
||||
|
||||
//cg.zoomed = 0;
|
||||
//cg.zoomLevel = 0;
|
||||
CG_RQ3_Zoom1x();
|
||||
trap_SendClientCommand("dropweapon");
|
||||
}
|
||||
|
||||
|
@ -91,18 +90,29 @@ static void CG_Bandage_f (void) {
|
|||
|
||||
//Elder: added to prevent bandaging while reloading or firing
|
||||
//Moved below "already-bandaging" case and removed message
|
||||
if ( cg.snap->ps.weaponTime > 0 || cg.snap->ps.weaponstate == WEAPON_COCKED) {
|
||||
//if ( cg.snap->ps.weaponTime > 0 || cg.snap->ps.weaponstate == WEAPON_COCKED) {
|
||||
//CG_Printf("You are too busy with your weapon!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
//else if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_BANDAGE_NEED) == RQ3_BANDAGE_NEED) {
|
||||
//cg.zoomed = 0;
|
||||
//cg.zoomLevel = 0;
|
||||
//return;
|
||||
//}
|
||||
if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_BANDAGE_NEED) == RQ3_BANDAGE_NEED) {
|
||||
CG_RQ3_Zoom1x();
|
||||
}
|
||||
trap_SendClientCommand("bandage");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
=================
|
||||
CG_ReloadReset_f
|
||||
|
||||
Elder: reset reload depressed flag
|
||||
=================
|
||||
*/
|
||||
static void CG_ReloadReset_f (void) {
|
||||
cg.rq3_reloadDown = qfalse;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
=================
|
||||
CG_Reload_f
|
||||
|
@ -117,7 +127,7 @@ static void CG_Reload_f (void) {
|
|||
if ( !cg.snap ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// if we are going into the intermission, don't do anything
|
||||
if ( cg.intermissionStarted ) {
|
||||
return;
|
||||
|
@ -128,12 +138,19 @@ static void CG_Reload_f (void) {
|
|||
return;
|
||||
}
|
||||
|
||||
if (cg.rq3_reloadDown)
|
||||
return;
|
||||
|
||||
cg.rq3_reloadDown = qtrue;
|
||||
|
||||
//Elder: prevent "reloading" when dead hehe
|
||||
if ( cg.snap->ps.stats[STAT_HEALTH] < 0 ) {
|
||||
CG_Printf("Nothing to reload - you are dead.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Elder: don't allow reloading until the weapon is free
|
||||
//Don't cut-off here because we want to check for fast-reloads
|
||||
//if (cg.snap->ps.weaponTime > 0)
|
||||
|
@ -152,6 +169,11 @@ static void CG_Reload_f (void) {
|
|||
//cg.zoomed = 0;
|
||||
//cg.zoomLevel = 0;
|
||||
}
|
||||
|
||||
//Elder: reset "no ammo" switch in view
|
||||
if (cg.snap->ps.weapon == WP_SSG3000 && cg.zoomFirstReturn == -1)
|
||||
cg.zoomFirstReturn = 0;
|
||||
|
||||
trap_SendClientCommand("reload");
|
||||
}
|
||||
|
||||
|
@ -559,7 +581,8 @@ static consoleCommand_t commands[] = {
|
|||
{ "weapon", CG_Weapon_f }, // Elder: it's for RQ3 and Q3A
|
||||
{ "dropweapon", CG_DropWeapon_f }, // Elder: added to reset zoom then goto server
|
||||
{ "bandage", CG_Bandage_f }, // Elder: added to reset zoom then goto server
|
||||
{ "reload", CG_Reload_f }, // Elder: added to reset zoom then goto server
|
||||
{ "+reload", CG_Reload_f }, // Elder: added to reset zoom then goto server
|
||||
{ "-reload", CG_ReloadReset_f}, // Elder: added to stop auto-throttle
|
||||
{ "specialweapon", CG_SpecialWeapon_f }, // Elder: select special weapon
|
||||
{ "tell_target", CG_TellTarget_f },
|
||||
{ "tell_attacker", CG_TellAttacker_f },
|
||||
|
|
|
@ -1983,8 +1983,8 @@ static void CG_DrawCrosshair(void) {
|
|||
qhandle_t hShader;
|
||||
float f;
|
||||
float x, y;
|
||||
int ca;
|
||||
char *ssg_crosshair;
|
||||
int ca, i;
|
||||
vec4_t crosshairColor;
|
||||
|
||||
if ( !cg_drawCrosshair.integer ) {
|
||||
return;
|
||||
|
@ -2021,32 +2021,51 @@ static void CG_DrawCrosshair(void) {
|
|||
|
||||
//Elder: Sniper crosshairs - lots of hardcoded values :/
|
||||
//if ( cg.snap->ps.weapon==WP_SSG3000 && cg.zoomLevel > 0 && cg.zoomLevel < 4) {
|
||||
if ( cg.snap->ps.weapon==WP_SSG3000 &&
|
||||
( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW ||
|
||||
(cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED ) ) {
|
||||
if ( cg.snap->ps.weapon == WP_SSG3000 &&
|
||||
(cg.zoomFirstReturn == -1 || cg.snap->ps.weaponTime < ZOOM_TIME) &&
|
||||
( (cg.zoomLevel & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW ||
|
||||
(cg.zoomLevel & RQ3_ZOOM_MED) == RQ3_ZOOM_MED ) ) {
|
||||
int zoomMag;
|
||||
x = SCREEN_WIDTH / 2;
|
||||
y = SCREEN_HEIGHT / 2;
|
||||
|
||||
//derive zoom level - seems complicated but they're only bit comparisions
|
||||
if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW &&
|
||||
(cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED ) {
|
||||
if ( (cg.zoomLevel & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW &&
|
||||
(cg.zoomLevel & RQ3_ZOOM_MED) == RQ3_ZOOM_MED ) {
|
||||
zoomMag = 2;
|
||||
}
|
||||
else if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW) {
|
||||
else if ( (cg.zoomLevel & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW) {
|
||||
zoomMag = 0;
|
||||
}
|
||||
else if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED) {
|
||||
else if ( (cg.zoomLevel & RQ3_ZOOM_MED) == RQ3_ZOOM_MED) {
|
||||
zoomMag = 1;
|
||||
}
|
||||
else {
|
||||
//Shouldn't need to be here
|
||||
CG_Error("CG_DrawCrosshair: received bad zoom value %d\n", zoomMag);
|
||||
CG_Error("CG_DrawCrosshair: received no zoom value\n");
|
||||
}
|
||||
|
||||
//Elder: Setup crosshair colours
|
||||
crosshairColor[0] = cg_RQ3_ssgColorR.value;
|
||||
crosshairColor[1] = cg_RQ3_ssgColorG.value;
|
||||
crosshairColor[2] = cg_RQ3_ssgColorB.value;
|
||||
crosshairColor[3] = cg_RQ3_ssgColorA.value;
|
||||
|
||||
//Clamp
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (crosshairColor[i] > 1.0)
|
||||
crosshairColor[i] = 1.0;
|
||||
else if (crosshairColor[i] < 0)
|
||||
crosshairColor[i] = 0;
|
||||
}
|
||||
|
||||
trap_R_SetColor(crosshairColor);
|
||||
//I can probably scale the zoom with the screen width -/+ keys
|
||||
//But I'll do it later.
|
||||
CG_DrawPic( x - 128, y - 128, 256, 256, cgs.media.ssgCrosshair[zoomMag]);
|
||||
|
||||
trap_R_SetColor(NULL);
|
||||
return;
|
||||
}
|
||||
else {
|
||||
|
@ -2706,7 +2725,7 @@ static void CG_DrawDamageBlend()
|
|||
vec4_t damageColor;
|
||||
|
||||
//Leave if no true damage, disabled, or ragepro
|
||||
if ( !cg.rq3_trueDamage || !rxn_painblend.integer ||
|
||||
if ( !cg.rq3_trueDamage || !cg_RQ3_painblend.integer ||
|
||||
cgs.glconfig.hardwareType == GLHW_RAGEPRO)
|
||||
{
|
||||
return;
|
||||
|
|
|
@ -711,7 +711,7 @@ void CG_BigExplode( vec3_t playerOrigin ) {
|
|||
|
||||
le->leType = LE_FRAGMENT;
|
||||
le->startTime = cg.time;
|
||||
le->endTime = le->startTime + (random() * 3000)+ rxn_glasstime.integer;// + 30000;
|
||||
le->endTime = le->startTime + (random() * 3000)+ cg_RQ3_glasstime.integer;// + 30000;
|
||||
|
||||
|
||||
VectorCopy( origin, re->origin );
|
||||
|
|
|
@ -97,45 +97,45 @@ static void CG_Obituary( entityState_t *ent ) {
|
|||
message2 = "";
|
||||
|
||||
// check for single client messages
|
||||
|
||||
gender = ci->gender;
|
||||
switch( mod ) {
|
||||
case MOD_SUICIDE:
|
||||
message = "suicides";
|
||||
break;
|
||||
case MOD_FALLING:
|
||||
//message = "'s thoughts weren't happy enough";
|
||||
//Elder: changed
|
||||
if ( gender == GENDER_FEMALE )
|
||||
message = "plummets to her death";
|
||||
else if ( gender == GENDER_NEUTER )
|
||||
message = "plummets to its death";
|
||||
else
|
||||
message = "plummets to his death";
|
||||
break;
|
||||
case MOD_CRUSH:
|
||||
message = "was flattened";
|
||||
break;
|
||||
case MOD_WATER:
|
||||
message = "sank like a rock";
|
||||
break;
|
||||
case MOD_SLIME:
|
||||
message = "melted";
|
||||
break;
|
||||
case MOD_LAVA:
|
||||
message = "does a back flip into the lava";
|
||||
break;
|
||||
case MOD_TARGET_LASER:
|
||||
message = "saw the light";
|
||||
break;
|
||||
case MOD_TRIGGER_HURT:
|
||||
message = "was in the wrong place";
|
||||
break;
|
||||
case MOD_BLEEDING:
|
||||
message = "bleeds to death";
|
||||
break;
|
||||
default:
|
||||
message = NULL;
|
||||
break;
|
||||
case MOD_SUICIDE:
|
||||
message = "suicides";
|
||||
break;
|
||||
case MOD_FALLING:
|
||||
//message = "'s thoughts weren't happy enough";
|
||||
//Elder: changed
|
||||
if ( gender == GENDER_FEMALE )
|
||||
message = "plummets to her death";
|
||||
else if ( gender == GENDER_NEUTER )
|
||||
message = "plummets to its death";
|
||||
else
|
||||
message = "plummets to his death";
|
||||
break;
|
||||
case MOD_CRUSH:
|
||||
message = "was flattened";
|
||||
break;
|
||||
case MOD_WATER:
|
||||
message = "sank like a rock";
|
||||
break;
|
||||
case MOD_SLIME:
|
||||
message = "melted";
|
||||
break;
|
||||
case MOD_LAVA:
|
||||
message = "does a back flip into the lava";
|
||||
break;
|
||||
case MOD_TARGET_LASER:
|
||||
message = "saw the light";
|
||||
break;
|
||||
case MOD_TRIGGER_HURT:
|
||||
message = "was in the wrong place";
|
||||
break;
|
||||
case MOD_BLEEDING:
|
||||
message = "bleeds to death";
|
||||
break;
|
||||
default:
|
||||
message = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
if (attacker == target) {
|
||||
|
@ -1639,8 +1639,17 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
//
|
||||
case EV_NOAMMO:
|
||||
DEBUGNAME("EV_NOAMMO");
|
||||
//Elder: uncommented
|
||||
trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.noAmmoSound );
|
||||
//Elder: Only play on non-grenade/knife
|
||||
//Todo: use "out of ammo sound" for specific gun?
|
||||
switch ( cg.snap->ps.weapon )
|
||||
{
|
||||
case WP_GRENADE:
|
||||
case WP_KNIFE:
|
||||
break;
|
||||
default:
|
||||
trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.noAmmoSound );
|
||||
break;
|
||||
}
|
||||
if ( es->number == cg.snap->ps.clientNum ) {
|
||||
CG_OutOfAmmoChange();
|
||||
}
|
||||
|
@ -1650,7 +1659,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
//Elder: TODO: change to appropriate weapon "in" sound
|
||||
trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.selectSound );
|
||||
//Elder: removed
|
||||
//CG_rxn_zoom(0);
|
||||
//CG_RQ3_Zoom(0);
|
||||
break;
|
||||
case EV_FIRE_WEAPON:
|
||||
DEBUGNAME("EV_FIRE_WEAPON");
|
||||
|
|
|
@ -125,7 +125,6 @@ void CG_DrawInformation( void ) {
|
|||
const char *s;
|
||||
const char *info;
|
||||
const char *sysInfo;
|
||||
char sTemp[1024];
|
||||
int x = 8;
|
||||
int y;
|
||||
int value;
|
||||
|
|
|
@ -77,6 +77,7 @@
|
|||
|
||||
//Elder: Some ssg stuff
|
||||
#define ZOOM_LEVELS 3
|
||||
#define ZOOM_PREPTIME 10 //milliseconds
|
||||
|
||||
typedef enum {
|
||||
FOOTSTEP_NORMAL,
|
||||
|
@ -507,8 +508,10 @@ typedef struct {
|
|||
|
||||
// zoom key
|
||||
|
||||
qboolean zoomed; // Hawkins: not just zoomed... but
|
||||
// int zoomLevel; // Zoom LEVEL!
|
||||
qboolean zoomed; // Determines first-person weapon drawing
|
||||
int zoomLevel; // Zoom LEVEL! -- uses zoom bits like STAT_RQ3
|
||||
int lastZoomLevel; // Save last zoom state
|
||||
int zoomFirstReturn; // Elder: switch for zooming in/out between shots
|
||||
int zoomTime;
|
||||
float zoomSensitivity;
|
||||
|
||||
|
@ -588,15 +591,15 @@ typedef struct {
|
|||
int weaponSelectTime;
|
||||
int weaponAnimation;
|
||||
int weaponAnimationTime;
|
||||
|
||||
|
||||
// blend blobs
|
||||
float damageTime;
|
||||
float damageX, damageY, damageValue;
|
||||
|
||||
//Elder: added for alpha pain blend
|
||||
int rq3_trueDamage; //Q3 doesn't hold the actual damage amount in cg.damageValue
|
||||
//float rq3_lastPainAlpha;
|
||||
float rq3_blendTime; //How long we take to fade out
|
||||
qboolean rq3_reloadDown; //Flag to check if reload is pressed
|
||||
|
||||
// status bar head
|
||||
float headYaw;
|
||||
|
@ -1177,13 +1180,21 @@ extern vmCvar_t cg_blood;
|
|||
extern vmCvar_t cg_predictItems;
|
||||
extern vmCvar_t cg_deferPlayers;
|
||||
//Blaze: Reaction weapon positions
|
||||
extern vmCvar_t rxn_drawWeapon;
|
||||
extern vmCvar_t cg_RQ3_drawWeapon;
|
||||
//Blaze: how long the glass stays around for
|
||||
extern vmCvar_t rxn_glasstime;
|
||||
extern vmCvar_t cg_RQ3_glasstime;
|
||||
//Elder: muzzle flash toggle
|
||||
extern vmCvar_t rxn_flash;
|
||||
//Elder: turn on or off alpha blending
|
||||
extern vmCvar_t rxn_painblend;
|
||||
extern vmCvar_t cg_RQ3_flash;
|
||||
//Elder: toggle alpha blending
|
||||
extern vmCvar_t cg_RQ3_painblend;
|
||||
//Elder: toggle client-side zoom assist
|
||||
extern vmCvar_t cg_RQ3_ssgZoomAssist;
|
||||
//Elder: crosshair colours!
|
||||
extern vmCvar_t cg_RQ3_ssgColorR;
|
||||
extern vmCvar_t cg_RQ3_ssgColorG;
|
||||
extern vmCvar_t cg_RQ3_ssgColorB;
|
||||
extern vmCvar_t cg_RQ3_ssgColorA;
|
||||
|
||||
extern vmCvar_t cg_drawFriend;
|
||||
extern vmCvar_t cg_teamChatsOnly;
|
||||
extern vmCvar_t cg_noVoiceChats;
|
||||
|
@ -1383,6 +1394,13 @@ void CG_Weapon_f( void );
|
|||
void CG_PrevWeapon_f( void );
|
||||
void CG_SpecialWeapon_f ( void );
|
||||
|
||||
void CG_RQ3_SyncZoom ( void );
|
||||
void CG_RQ3_SaveZoomLevel();
|
||||
void CG_RQ3_Zoom( void ); //Elder: just threw it in
|
||||
void CG_RQ3_Zoom1x();
|
||||
int CG_RQ3_GetGrenadeMode();
|
||||
void CG_RQ3_GrenadeMode();
|
||||
|
||||
void CG_RegisterWeapon( int weaponNum );
|
||||
void CG_RegisterItemVisuals( int itemNum );
|
||||
|
||||
|
@ -1397,7 +1415,6 @@ void CG_GrappleTrail( centity_t *ent, const weaponInfo_t *wi );
|
|||
void CG_AddViewWeapon (playerState_t *ps);
|
||||
void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent, int team );
|
||||
void CG_DrawWeaponSelect( void );
|
||||
void CG_RXN_Zoom( void ); //Elder: just threw it in
|
||||
|
||||
void CG_OutOfAmmoChange( void ); // should this be in pmove?
|
||||
|
||||
|
|
|
@ -138,12 +138,19 @@ vmCvar_t cg_deferPlayers;
|
|||
vmCvar_t cg_drawTeamOverlay;
|
||||
vmCvar_t cg_teamOverlayUserinfo;
|
||||
//Blaze: reaction weapon positioning
|
||||
vmCvar_t rxn_drawWeapon;
|
||||
vmCvar_t rxn_glasstime;
|
||||
vmCvar_t cg_RQ3_drawWeapon;
|
||||
vmCvar_t cg_RQ3_glasstime;
|
||||
//Elder: muzzle flash toggle
|
||||
vmCvar_t rxn_flash;
|
||||
//Elder: turn on or off alpha blending
|
||||
vmCvar_t rxn_painblend;
|
||||
vmCvar_t cg_RQ3_flash;
|
||||
//Elder: toggle alpha blending
|
||||
vmCvar_t cg_RQ3_painblend;
|
||||
//Elder: toggle client-side zoom assist
|
||||
vmCvar_t cg_RQ3_ssgZoomAssist;
|
||||
//Elder: crosshair colours!
|
||||
vmCvar_t cg_RQ3_ssgColorR;
|
||||
vmCvar_t cg_RQ3_ssgColorG;
|
||||
vmCvar_t cg_RQ3_ssgColorB;
|
||||
vmCvar_t cg_RQ3_ssgColorA;
|
||||
vmCvar_t cg_drawFriend;
|
||||
vmCvar_t cg_teamChatsOnly;
|
||||
vmCvar_t cg_noVoiceChats;
|
||||
|
@ -294,12 +301,16 @@ cvarTable_t cvarTable[] = {
|
|||
{ &cg_smallFont, "ui_smallFont", "0.25", CVAR_ARCHIVE},
|
||||
{ &cg_bigFont, "ui_bigFont", "0.4", CVAR_ARCHIVE},
|
||||
//Blaze: Reaction hand type command
|
||||
{ &rxn_drawWeapon, "rxn_drawWeapon", "2", CVAR_ARCHIVE },
|
||||
{ &rxn_glasstime, "rxn_glasstime", "0", CVAR_ARCHIVE },
|
||||
{ &cg_RQ3_drawWeapon, "cg_RQ3_drawWeapon", "2", CVAR_ARCHIVE },
|
||||
{ &cg_RQ3_glasstime, "cg_RQ3_glasstime", "0", CVAR_ARCHIVE },
|
||||
//Elder: added
|
||||
{ &rxn_flash, "rxn_flash", "1", CVAR_ARCHIVE },
|
||||
{ &rxn_painblend, "rxn_painblend", "1", CVAR_ARCHIVE }
|
||||
|
||||
{ &cg_RQ3_flash, "cg_RQ3_flash", "1", CVAR_ARCHIVE },
|
||||
{ &cg_RQ3_painblend, "cg_RQ3_painblend", "1", CVAR_ARCHIVE },
|
||||
{ &cg_RQ3_ssgZoomAssist, "cg_RQ3_ssgZoomAssist", "1", CVAR_ARCHIVE },
|
||||
{ &cg_RQ3_ssgColorR, "cg_RQ3_ssgColorR", "0.0", CVAR_ARCHIVE },
|
||||
{ &cg_RQ3_ssgColorG, "cg_RQ3_ssgColorG", "1.0", CVAR_ARCHIVE },
|
||||
{ &cg_RQ3_ssgColorB, "cg_RQ3_ssgColorB", "0.0", CVAR_ARCHIVE },
|
||||
{ &cg_RQ3_ssgColorA, "cg_RQ3_ssgColorA", "0.75", CVAR_ARCHIVE }
|
||||
// { &cg_pmove_fixed, "cg_pmove_fixed", "0", CVAR_USERINFO | CVAR_ARCHIVE }
|
||||
};
|
||||
|
||||
|
|
|
@ -12,22 +12,24 @@
|
|||
CG_CheckAmmo
|
||||
|
||||
If the ammo has gone low enough to generate the warning, play a sound
|
||||
Elder: changed the purpose of the function
|
||||
It now generates a warning ONLY if the *current* weapon is low on/out of ammo
|
||||
==============
|
||||
*/
|
||||
void CG_CheckAmmo( void ) {
|
||||
int i;
|
||||
//int i;
|
||||
int total;
|
||||
int previous;
|
||||
int weapons;
|
||||
//int weapons;
|
||||
|
||||
// see about how many seconds of ammo we have remaining
|
||||
weapons = cg.snap->ps.stats[ STAT_WEAPONS ];
|
||||
//weapons = cg.snap->ps.stats[ STAT_WEAPONS ];
|
||||
total = 0;
|
||||
//Blaze: ammo check
|
||||
for ( i = WP_KNIFE ; i < WP_NUM_WEAPONS ; i++ ) {
|
||||
if ( ! ( weapons & ( 1 << i ) ) ) {
|
||||
continue;
|
||||
}
|
||||
//for ( i = WP_KNIFE ; i < WP_NUM_WEAPONS ; i++ ) {
|
||||
//if ( ! ( weapons & ( 1 << i ) ) ) {
|
||||
//continue;
|
||||
//}
|
||||
//Blaze: Dont need this
|
||||
/*
|
||||
switch ( i ) {
|
||||
|
@ -45,26 +47,72 @@ void CG_CheckAmmo( void ) {
|
|||
break;
|
||||
}
|
||||
*/
|
||||
total += cg.snap->ps.ammo[i] * 2000;//Blaze: Make this big so you dont his the amo check off the bat
|
||||
//Elder: how it should be handled - but we're not using it
|
||||
//for this purpose
|
||||
/*
|
||||
switch (i) {
|
||||
case WP_PISTOL:
|
||||
total += cg.snap->ps.ammo[i] * RQ3_PISTOL_DELAY;
|
||||
break;
|
||||
case WP_M3:
|
||||
total += cg.snap->ps.ammo[i] * RQ3_M3_DELAY;
|
||||
break;
|
||||
case WP_M4:
|
||||
total += cg.snap->ps.ammo[i] * RQ3_M4_DELAY;
|
||||
break;
|
||||
case WP_MP5:
|
||||
total += cg.snap->ps.ammo[i] * RQ3_MP5_DELAY;
|
||||
break;
|
||||
case WP_M3:
|
||||
total += cg.snap->ps.ammo[i] * RQ3_M3_DELAY;
|
||||
break;
|
||||
case WP_SSG3000:
|
||||
total += cg.snap->ps.ammo[i] * RQ3_SSG3000_DELAY;
|
||||
break;
|
||||
case WP_GRENADE:
|
||||
total += cg.snap->ps.ammo[i] * RQ3_GRENADE_DELAY;
|
||||
break;
|
||||
case WP_KNIFE:
|
||||
total += cg.snap->ps.ammo[i] * RQ3_KNIFE_DELAY;
|
||||
break;
|
||||
default:
|
||||
total += cg.snap->ps.ammo[i] * 2000;
|
||||
break;
|
||||
}
|
||||
*/
|
||||
|
||||
//total += cg.snap->ps.ammo[i] * 2000;//Blaze: Make this big so you dont his the amo check off the bat
|
||||
/*
|
||||
if ( total >= 5000 ) {
|
||||
cg.lowAmmoWarning = 0;
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
|
||||
total = cg.snap->ps.ammo[cg.snap->ps.weapon];
|
||||
|
||||
if (total > 0)
|
||||
{
|
||||
cg.lowAmmoWarning = 0;
|
||||
if (cg.snap->ps.weapon == WP_SSG3000 && cg.zoomFirstReturn == -1)
|
||||
cg.zoomFirstReturn = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
previous = cg.lowAmmoWarning;
|
||||
|
||||
if ( total == 0 ) {
|
||||
cg.lowAmmoWarning = 2;
|
||||
} else {
|
||||
}
|
||||
//else {
|
||||
//Elder: only allow completely empty ammo warning sounds
|
||||
//cg.lowAmmoWarning = 1;
|
||||
}
|
||||
//}
|
||||
|
||||
// play a sound on transitions
|
||||
if ( cg.lowAmmoWarning != previous ) {
|
||||
trap_S_StartLocalSound( cgs.media.noAmmoSound, CHAN_LOCAL_SOUND );
|
||||
}
|
||||
//if ( cg.lowAmmoWarning != previous ) {
|
||||
//trap_S_StartLocalSound( cgs.media.noAmmoSound, CHAN_LOCAL_SOUND );
|
||||
//}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -194,8 +242,7 @@ void CG_Respawn( void ) {
|
|||
cg.weaponSelect = cg.snap->ps.weapon;
|
||||
|
||||
//Elder: added to reset zoom stuff LOCALLY
|
||||
//cg.zoomed = qfalse;
|
||||
//cg.zoomLevel = 0;
|
||||
CG_RQ3_Zoom1x();
|
||||
}
|
||||
|
||||
extern char *eventnames[];
|
||||
|
@ -522,5 +569,24 @@ void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops ) {
|
|||
cg.duckChange = ps->viewheight - ops->viewheight;
|
||||
cg.duckTime = cg.time;
|
||||
}
|
||||
|
||||
//Elder: grenade message
|
||||
if (ps->weapon == WP_GRENADE &&
|
||||
ps->weaponstate == WEAPON_COCKED && ops->weaponstate != WEAPON_COCKED)
|
||||
{
|
||||
switch(CG_RQ3_GetGrenadeMode())
|
||||
{
|
||||
case RQ3_GRENSHORT|RQ3_GRENMED:
|
||||
CG_Printf("Pin pulled. Ready to make a long range throw.\n");
|
||||
break;
|
||||
case RQ3_GRENMED:
|
||||
CG_Printf("Pin pulled. Ready to make a medium range throw.\n");
|
||||
break;
|
||||
case RQ3_GRENSHORT:
|
||||
CG_Printf("Pin pulled. Ready to make a short range throw.\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1051,14 +1051,12 @@ static void CG_ServerCommand( void ) {
|
|||
case WP_PISTOL:
|
||||
case WP_KNIFE:
|
||||
case WP_AKIMBO:
|
||||
case WP_GRENADE:
|
||||
break;
|
||||
//case WP_GRENADE:
|
||||
default:
|
||||
cg.weaponSelectTime = cg.time;
|
||||
cg.weaponSelect = WP_PISTOL;
|
||||
//cg.zoomed = qfalse;
|
||||
//cg.zoomLevel = 0;
|
||||
//trap_SendClientCommand("unzoom");
|
||||
CG_RQ3_Zoom1x();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -442,6 +442,48 @@ void CG_ZoomUp_f( void ) {
|
|||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
====================
|
||||
CG_RQ3_GetFov
|
||||
|
||||
Returns a FOV based on the current zoom state
|
||||
====================
|
||||
*/
|
||||
|
||||
static int CG_RQ3_GetFov()
|
||||
{
|
||||
if ( (cg.zoomLevel & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW &&
|
||||
(cg.zoomLevel & RQ3_ZOOM_MED) == RQ3_ZOOM_MED )
|
||||
return 10;
|
||||
else if ( (cg.zoomLevel & RQ3_ZOOM_MED) == RQ3_ZOOM_MED)
|
||||
return 20;
|
||||
else if ( (cg.zoomLevel & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW)
|
||||
return 45;
|
||||
|
||||
return 90;
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
CG_RQ3_GetFov
|
||||
|
||||
Returns a FOV based on the last zoom state
|
||||
====================
|
||||
*/
|
||||
|
||||
static int CG_RQ3_GetLastFov()
|
||||
{
|
||||
if ( (cg.lastZoomLevel & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW &&
|
||||
(cg.lastZoomLevel & RQ3_ZOOM_MED) == RQ3_ZOOM_MED )
|
||||
return 10;
|
||||
else if ( (cg.lastZoomLevel & RQ3_ZOOM_MED) == RQ3_ZOOM_MED)
|
||||
return 20;
|
||||
else if ( (cg.lastZoomLevel & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW)
|
||||
return 45;
|
||||
|
||||
return 90;
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
CG_CalcFov
|
||||
|
@ -457,16 +499,15 @@ static int CG_CalcFov( void ) {
|
|||
float phase;
|
||||
float v;
|
||||
int contents;
|
||||
float fov_x, fov_y;
|
||||
float zoomFov;
|
||||
float fov_x, fov_y; //Current zoom
|
||||
float zoomFov; //Desired zoom
|
||||
float f;
|
||||
int inwater;
|
||||
|
||||
/* if ( cg.predictedPlayerState.pm_type == PM_INTERMISSION ) {
|
||||
// if in intermission, use a fixed value */
|
||||
|
||||
// Hawkins always use FOV 90.
|
||||
fov_x = 90;
|
||||
if ( cg.predictedPlayerState.pm_type == PM_INTERMISSION ) {
|
||||
fov_x = 90;
|
||||
}
|
||||
// if in intermission, use a fixed value
|
||||
|
||||
/*
|
||||
} else {
|
||||
|
@ -486,78 +527,136 @@ static int CG_CalcFov( void ) {
|
|||
// account for zooms
|
||||
// zoomFov = cg_zoomFov.value;
|
||||
*/
|
||||
// Hawkins Reaction zooming.
|
||||
if ( cg.snap->ps.weapon==WP_SSG3000 &&
|
||||
( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW ||
|
||||
(cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED ) ) {
|
||||
/*
|
||||
switch(cg.zoomLevel){
|
||||
case 1:
|
||||
zoomFov=45;
|
||||
break;
|
||||
case 2:
|
||||
fov_x = 45;
|
||||
zoomFov=20;
|
||||
break;
|
||||
case 3:
|
||||
fov_x = 20;
|
||||
zoomFov=10;
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
zoomFov=90;
|
||||
cg.zoomed=qfalse;
|
||||
break;
|
||||
}*/
|
||||
if (cg_RQ3_ssgZoomAssist.integer == 0)
|
||||
CG_RQ3_SyncZoom();
|
||||
|
||||
//SSG3000 zoom handling
|
||||
if ( cg.snap->ps.weapon == WP_SSG3000)
|
||||
{
|
||||
//switching zoom
|
||||
if (cg.zoomLevel != cg.lastZoomLevel)
|
||||
{
|
||||
fov_x = CG_RQ3_GetLastFov();
|
||||
//Get desired zoom FOV based on current FOV
|
||||
if (cg.zoomLevel == 0)
|
||||
{
|
||||
zoomFov = 90;
|
||||
cg.zoomed = qfalse;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ((int)fov_x)
|
||||
{
|
||||
case 20:
|
||||
zoomFov = 10;
|
||||
cg.zoomed = qtrue;
|
||||
break;
|
||||
case 45:
|
||||
zoomFov = 20;
|
||||
cg.zoomed = qtrue;
|
||||
break;
|
||||
case 90:
|
||||
zoomFov = 45;
|
||||
cg.zoomed = qtrue;
|
||||
break;
|
||||
case 10:
|
||||
default:
|
||||
zoomFov = 90;
|
||||
cg.zoomed = qfalse;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW &&
|
||||
(cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED ) {
|
||||
//6x
|
||||
fov_x = 20;
|
||||
zoomFov = 10;
|
||||
cg.zoomed = qtrue;
|
||||
}
|
||||
else if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW) {
|
||||
//2x
|
||||
zoomFov = 45;
|
||||
cg.zoomed = qtrue;
|
||||
}
|
||||
else if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED) {
|
||||
//4x
|
||||
fov_x = 45;
|
||||
zoomFov = 20;
|
||||
cg.zoomed = qtrue;
|
||||
}
|
||||
else {
|
||||
//1x
|
||||
zoomFov = 90;
|
||||
cg.zoomed = qfalse;
|
||||
}
|
||||
|
||||
if ( zoomFov < 1 ) {
|
||||
zoomFov = 1;
|
||||
} else if ( zoomFov > 160 ) {
|
||||
zoomFov = 160;
|
||||
}
|
||||
if ( cg.zoomed ) {
|
||||
f = ( cg.time - cg.zoomTime ) / (float)ZOOM_TIME;
|
||||
if ( f > 1.0 ) {
|
||||
if ( f > 1.0 )
|
||||
{
|
||||
//finished zoom switch
|
||||
cg.lastZoomLevel = cg.zoomLevel;
|
||||
fov_x = zoomFov;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
fov_x = fov_x + f * ( zoomFov - fov_x );
|
||||
}
|
||||
//Idle state or out of ammo
|
||||
else if (cg.snap->ps.weaponTime == 0)
|
||||
{
|
||||
fov_x = CG_RQ3_GetFov();
|
||||
if (fov_x == 90)
|
||||
cg.zoomed = qfalse;
|
||||
else
|
||||
cg.zoomed = qtrue;
|
||||
|
||||
//if (cg.snap->ps.ammo[WP_SSG3000] == 0)
|
||||
//cg.zoomFirstReturn = -1;
|
||||
//else
|
||||
if (cg.lowAmmoWarning)
|
||||
cg.zoomFirstReturn = -1;
|
||||
else
|
||||
cg.zoomFirstReturn = 0;
|
||||
}
|
||||
//Zoom back in after a reload or fire or weapon switch
|
||||
else if (cg.snap->ps.weaponTime < ZOOM_TIME)
|
||||
{
|
||||
if (cg.zoomFirstReturn == 1)
|
||||
{
|
||||
cg.zoomTime = cg.time;
|
||||
cg.zoomFirstReturn = 0;
|
||||
}
|
||||
} else {
|
||||
|
||||
fov_x = 90;
|
||||
zoomFov = CG_RQ3_GetFov();
|
||||
|
||||
if (zoomFov == 90)
|
||||
cg.zoomed = qfalse;
|
||||
else
|
||||
cg.zoomed = qtrue;
|
||||
|
||||
f = ( cg.time - cg.zoomTime ) / (float)ZOOM_TIME;
|
||||
if ( f > 1.0 ) {
|
||||
fov_x = fov_x;
|
||||
} else {
|
||||
fov_x = zoomFov + f * ( fov_x - zoomFov );
|
||||
if ( f > 1.0 || cg.zoomFirstReturn == -1)
|
||||
fov_x = zoomFov;
|
||||
else
|
||||
fov_x = fov_x + f * ( zoomFov - fov_x );
|
||||
//fov_x = zoomFov + f * ( fov_x - zoomFov );
|
||||
}
|
||||
//first time after a shot or reload - zoom out
|
||||
else
|
||||
{
|
||||
if (cg.zoomFirstReturn == 0)
|
||||
{
|
||||
cg.zoomTime = cg.time;
|
||||
cg.zoomFirstReturn = 1;
|
||||
}
|
||||
|
||||
fov_x = CG_RQ3_GetFov();
|
||||
|
||||
if (cg.zoomFirstReturn == -1)
|
||||
zoomFov = fov_x;
|
||||
else
|
||||
zoomFov = 90;
|
||||
|
||||
//if (zoomFov == 90)
|
||||
//cg.zoomed = qfalse;
|
||||
//else
|
||||
//cg.zoomed = qtrue;
|
||||
|
||||
f = ( cg.time - cg.zoomTime ) / (float)ZOOM_TIME;
|
||||
if ( f > 1.0 )
|
||||
{
|
||||
fov_x = zoomFov;
|
||||
if (fov_x == 90)
|
||||
cg.zoomed = qfalse;
|
||||
else
|
||||
cg.zoomed = qtrue;
|
||||
}
|
||||
else
|
||||
fov_x = fov_x + f * ( zoomFov - fov_x );
|
||||
}
|
||||
}
|
||||
else {
|
||||
//Elder: safety check
|
||||
//cg.zoomLevel = 0;
|
||||
//Using anything but the SSG3000
|
||||
else
|
||||
{
|
||||
//Always at 90 degrees
|
||||
fov_x = 90;
|
||||
cg.zoomed = qfalse;
|
||||
}
|
||||
|
||||
|
|
|
@ -1287,8 +1287,8 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
|
|||
//Blaze: No flash
|
||||
//Elder: Yes flash - try this
|
||||
|
||||
//Elder: add conditional here so the dlight is still drawn when rxn_flash is 0
|
||||
if ( rxn_flash.integer ) {
|
||||
//Elder: add conditional here so the dlight is still drawn when cg_RQ3_flash is 0
|
||||
if ( cg_RQ3_flash.integer ) {
|
||||
if (ps) {
|
||||
//Elder: draw flash based on first-person view
|
||||
CG_PositionRotatedEntityOnTag( &flash, &gun, weapon->firstModel, "tag_flash");
|
||||
|
@ -1420,9 +1420,9 @@ void CG_AddViewWeapon( playerState_t *ps ) {
|
|||
rxn_gunx += 10;
|
||||
}
|
||||
|
||||
if ((rxn_drawWeapon.integer > 1 ) && (rxn_drawWeapon.integer < 4 ))
|
||||
if ((cg_RQ3_drawWeapon.integer > 1 ) && (cg_RQ3_drawWeapon.integer < 4 ))
|
||||
{
|
||||
rxn_guny = cg_gun_y.value + 4*(rxn_drawWeapon.integer-1);
|
||||
rxn_guny = cg_gun_y.value + 4*(cg_RQ3_drawWeapon.integer-1);
|
||||
}
|
||||
//Blaze end:
|
||||
|
||||
|
@ -1639,7 +1639,7 @@ void CG_NextWeapon_f( void ) {
|
|||
cg.weaponSelect = original;
|
||||
}
|
||||
else {
|
||||
trap_SendClientCommand("unzoom");
|
||||
CG_RQ3_Zoom1x();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1700,7 +1700,7 @@ void CG_PrevWeapon_f( void ) {
|
|||
cg.weaponSelect = original;
|
||||
}
|
||||
else {
|
||||
trap_SendClientCommand("unzoom");
|
||||
CG_RQ3_Zoom1x();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1766,22 +1766,92 @@ void CG_SpecialWeapon_f( void ) {
|
|||
cg.weaponSelect = original;
|
||||
}
|
||||
else {
|
||||
trap_SendClientCommand("unzoom");
|
||||
CG_RQ3_Zoom1x();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Elder: for returning to the zoom state in ps stats
|
||||
void CG_RQ3_QuickZoom ( void ) {
|
||||
//cg.zoomLevel = lastzoom;
|
||||
void CG_RQ3_SyncZoom ( void ) {
|
||||
if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW &&
|
||||
(cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED ) {
|
||||
//CG_Printf("Zoomed to 6x\n");
|
||||
cg.zoomLevel = RQ3_ZOOM_LOW|RQ3_ZOOM_MED;
|
||||
}
|
||||
else if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW) {
|
||||
//CG_Printf("Zoomed to 2x\n");
|
||||
cg.zoomLevel = RQ3_ZOOM_LOW;
|
||||
}
|
||||
else if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED) {
|
||||
//CG_Printf("Zoomed to 4x\n");
|
||||
cg.zoomLevel = RQ3_ZOOM_MED;
|
||||
}
|
||||
else {
|
||||
//CG_Printf("Zoomed out\n");
|
||||
cg.zoomLevel = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Hawkins (weapon command)
|
||||
// Elder: Don't call it the weapon command heh :)
|
||||
//void CG_RXN_Zoom(int n){
|
||||
//Elder: not used again - AQ2 doesn't tell the player about the zoom level
|
||||
void CG_RXN_Zoom( void ) {
|
||||
//Elder: save zoom level and do any other necessary housekeeping
|
||||
void CG_RQ3_SaveZoomLevel() {
|
||||
cg.lastZoomLevel = cg.zoomLevel;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void CG_RQ3_SyncZoom2 ( void ) {
|
||||
int statZoom;
|
||||
|
||||
if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW &&
|
||||
(cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED ) {
|
||||
statZoom = RQ3_ZOOM_LOW|RQ3_ZOOM_MED;
|
||||
}
|
||||
else if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW) {
|
||||
statZoom = RQ3_ZOOM_LOW;
|
||||
}
|
||||
else if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED) {
|
||||
statZoom = RQ3_ZOOM_MED;
|
||||
}
|
||||
else {
|
||||
statZoom = 0;
|
||||
}
|
||||
|
||||
if (statZoom != cg.zoomLevel)
|
||||
cg.zoomLevel = statZoom;
|
||||
}*/
|
||||
|
||||
//Elder: This should identical to the portion inside
|
||||
//the weapon function in g_cmds.c
|
||||
void CG_RQ3_Zoom( void ) {
|
||||
//Elder: reworked SSG zoom
|
||||
if (cg.snap->ps.weapon == WP_SSG3000)
|
||||
{
|
||||
CG_RQ3_SaveZoomLevel();
|
||||
|
||||
if ( (cg.zoomLevel & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW &&
|
||||
(cg.zoomLevel & RQ3_ZOOM_MED) == RQ3_ZOOM_MED ) {
|
||||
//Elder: zoom 1x
|
||||
cg.zoomLevel &= ~RQ3_ZOOM_LOW;
|
||||
cg.zoomLevel &= ~RQ3_ZOOM_MED;
|
||||
}
|
||||
else if ( (cg.zoomLevel & RQ3_ZOOM_MED) == RQ3_ZOOM_MED) {
|
||||
//Elder: zoom 6x
|
||||
cg.zoomLevel |= RQ3_ZOOM_LOW;
|
||||
}
|
||||
else if ( (cg.zoomLevel & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW) {
|
||||
//Elder: zoom 4x
|
||||
cg.zoomLevel |= RQ3_ZOOM_MED;
|
||||
cg.zoomLevel &= ~RQ3_ZOOM_LOW;
|
||||
}
|
||||
else {
|
||||
//Elder: zoom 2x
|
||||
cg.zoomLevel |= RQ3_ZOOM_LOW;
|
||||
}
|
||||
|
||||
cg.zoomTime = cg.time;
|
||||
}
|
||||
|
||||
/*
|
||||
if(cg.snap->ps.weapon==WP_SSG3000) {
|
||||
cg.zoomLevel++;
|
||||
|
@ -1797,48 +1867,50 @@ void CG_RXN_Zoom( void ) {
|
|||
cg.zoomTime = cg.time;
|
||||
}
|
||||
*/
|
||||
if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW &&
|
||||
(cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED ) {
|
||||
CG_Printf("Zoomed to 6x\n");
|
||||
}
|
||||
else if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW) {
|
||||
CG_Printf("Zoomed to 2x\n");
|
||||
}
|
||||
else if ( (cg.snap->ps.stats[STAT_RQ3] & RQ3_ZOOM_MED) == RQ3_ZOOM_MED) {
|
||||
CG_Printf("Zoomed to 4x\n");
|
||||
}
|
||||
else {
|
||||
CG_Printf("Zoomed out\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
if ( n == 0 ) {
|
||||
cg.zoomLevel=0;
|
||||
cg.zoomed=qfalse;
|
||||
// trap_Cvar_Set("cg_drawGun","1");
|
||||
CG_Printf("Zoomed to 1x\n");
|
||||
} else {
|
||||
// trap_Cvar_Set("cg_drawGun","0");
|
||||
cg.zoomed = qtrue;
|
||||
cg.zoomTime = cg.time;
|
||||
CG_Printf("Zoomed to %dx\n",2*n);
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
// trap_SendClientCommand ("weapon");
|
||||
//Elder: reset locally and send server message
|
||||
void CG_RQ3_Zoom1x () {
|
||||
if (cg_RQ3_ssgZoomAssist.integer)
|
||||
{
|
||||
cg.lastZoomLevel = cg.zoomLevel;
|
||||
cg.zoomLevel = 0;
|
||||
cg.zoomTime = cg.time;
|
||||
}
|
||||
trap_SendClientCommand("unzoom");
|
||||
}
|
||||
|
||||
int CG_RQ3_GetGrenadeMode()
|
||||
{
|
||||
int grenMode = 0;
|
||||
|
||||
if ( (cg.snap->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENSHORT) == RQ3_GRENSHORT)
|
||||
grenMode |= RQ3_GRENSHORT;
|
||||
|
||||
if ( (cg.snap->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENMED) == RQ3_GRENMED)
|
||||
grenMode |= RQ3_GRENMED;
|
||||
|
||||
return grenMode;
|
||||
}
|
||||
|
||||
//Elder: unused function
|
||||
/*
|
||||
void rxn_zoom1x(void) {
|
||||
cg.zoomLevel=0;
|
||||
cg.zoomed=qfalse;
|
||||
cg.zoomTime = cg.time;
|
||||
//Print grenade mode message
|
||||
void CG_RQ3_GrenadeMode()
|
||||
{
|
||||
//Print a message for the next mode in line
|
||||
if ( (cg.snap->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENSHORT) == RQ3_GRENSHORT &&
|
||||
(cg.snap->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENMED) == RQ3_GRENMED ) {
|
||||
CG_Printf("Prepared to make a short range throw\n");
|
||||
//cg.grenadeMode = RQ3_GRENSHORT|RQ3_GRENMED;
|
||||
}
|
||||
else if ( (cg.snap->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENSHORT) == RQ3_GRENSHORT) {
|
||||
CG_Printf("Prepared to make a medium range throw\n");
|
||||
//cg.grenadeMode = RQ3_GRENSHORT;
|
||||
}
|
||||
else if ( (cg.snap->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENMED) == RQ3_GRENMED) {
|
||||
CG_Printf("Prepared to make a long range throw\n");
|
||||
//cg.grenadeMode = RQ3_GRENMED;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
===============
|
||||
|
@ -1882,9 +1954,15 @@ void CG_Weapon_f( void ) {
|
|||
if (cg.snap->ps.weapon == WP_SSG3000) {
|
||||
//trap_S_StartSound( NULL, cg.snap->ps.clientNum, CHAN_ITEM, cgs.media.lensSound);
|
||||
trap_S_StartLocalSound( cgs.media.lensSound, CHAN_ITEM);
|
||||
//CG_RXN_Zoom();
|
||||
if (cg_RQ3_ssgZoomAssist.integer)
|
||||
CG_RQ3_Zoom();
|
||||
}
|
||||
else {
|
||||
else if (cg.snap->ps.weapon == WP_GRENADE)
|
||||
{
|
||||
CG_RQ3_GrenadeMode();
|
||||
}
|
||||
else
|
||||
{
|
||||
//do weapon select sound
|
||||
}
|
||||
trap_SendClientCommand("weapon");
|
||||
|
@ -1913,7 +1991,7 @@ void CG_Weapon_f( void ) {
|
|||
//cg.zoomed = qfalse;
|
||||
//cg.zoomLevel = 0;
|
||||
|
||||
trap_SendClientCommand("unzoom");
|
||||
CG_RQ3_Zoom1x();
|
||||
cg.weaponSelect = num;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue