Fixed some of the new persistant stuff + sniper spread
This commit is contained in:
Victor Chow 2001-06-11 23:02:21 +00:00
parent 93267c42cc
commit 725f2284fe
5 changed files with 50 additions and 16 deletions

View File

@ -581,8 +581,12 @@ void ClientTimerActions( gentity_t *ent, int msec ) {
//Blaze: Do bandaging stuff //Blaze: Do bandaging stuff
if (ent->client->bleedtick > 1) if (ent->client->bleedtick > 1)
{ {
G_Printf("Bleedtick getting lowerd by one(%d)\n",client->timeResidual); G_Printf("Bleedtick (%d) getting lowered by one (%d)\n", ent->client->bleedtick, client->timeResidual);
ent->client->bleedtick--; ent->client->bleedtick--;
//Elder: added
if (ent->client->bleedtick == 2) {
ent->client->ps.stats[STAT_RQ3] &= !RQ3_LEGDAMAGE;
}
} }
else if (ent->client->bleedtick == 1) else if (ent->client->bleedtick == 1)
{ {
@ -883,6 +887,8 @@ void ThrowWeapon( gentity_t *ent )
return; return;
} }
//Elder: have to add a reloading case
weap = 0; weap = 0;
if (client->ps.stats[STAT_UNIQUEWEAPONS] > 0) if (client->ps.stats[STAT_UNIQUEWEAPONS] > 0)
{ {

View File

@ -989,6 +989,12 @@ void ClientBegin( int clientNum ) {
memset( &client->ps, 0, sizeof( client->ps ) ); memset( &client->ps, 0, sizeof( client->ps ) );
client->ps.eFlags = flags; client->ps.eFlags = flags;
//Elder: added to initialize weaponmodes
client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENSHORT; //set to short range
client->ps.persistant[PERS_WEAPONMODES] |= RQ3_KNIFEMODE; //set to slash attack
//Elder: debug
//G_Printf("In clientbegin- PERS_WEAPONMODES: %d\n", ent->client->ps.persistant[PERS_WEAPONMODES]);
// locate ent at a spawn point // locate ent at a spawn point
ClientSpawn( ent ); ClientSpawn( ent );
@ -1094,6 +1100,7 @@ void ClientSpawn(gentity_t *ent) {
// savedAreaBits = client->areabits; // savedAreaBits = client->areabits;
accuracy_hits = client->accuracy_hits; accuracy_hits = client->accuracy_hits;
accuracy_shots = client->accuracy_shots; accuracy_shots = client->accuracy_shots;
for ( i = 0 ; i < MAX_PERSISTANT ; i++ ) { for ( i = 0 ; i < MAX_PERSISTANT ; i++ ) {
persistant[i] = client->ps.persistant[i]; persistant[i] = client->ps.persistant[i];
} }
@ -1112,7 +1119,7 @@ void ClientSpawn(gentity_t *ent) {
client->accuracy_hits = accuracy_hits; client->accuracy_hits = accuracy_hits;
client->accuracy_shots = accuracy_shots; client->accuracy_shots = accuracy_shots;
client->lastkilled_client = -1; client->lastkilled_client = -1;
for ( i = 0 ; i < MAX_PERSISTANT ; i++ ) { for ( i = 0 ; i < MAX_PERSISTANT ; i++ ) {
client->ps.persistant[i] = persistant[i]; client->ps.persistant[i] = persistant[i];
} }
@ -1223,7 +1230,8 @@ void ClientSpawn(gentity_t *ent) {
client->zoomed=0; client->zoomed=0;
//Elder: knife reset/initialize //Elder: knife reset/initialize
client->ps.persistant[PERS_WEAPONMODES] &= !RQ3_KNIFEMODE; //Elder: removed - set in ClientBegin
//client->ps.persistant[PERS_WEAPONMODES] &= !RQ3_KNIFEMODE;
//Elder: reset isBandaging flag //Elder: reset isBandaging flag
client->isBandaging = qfalse; client->isBandaging = qfalse;
@ -1262,6 +1270,9 @@ void ClientSpawn(gentity_t *ent) {
trap_LinkEntity( ent ); trap_LinkEntity( ent );
} }
//Elder: debug
//G_Printf("Just after respawn- PERS_WEAPONMODES: %d\n", ent->client->ps.persistant[PERS_WEAPONMODES]);
// run the presend to set anything else // run the presend to set anything else
ClientEndFrame( ent ); ClientEndFrame( ent );

View File

@ -1611,7 +1611,8 @@ void Cmd_Bandage (gentity_t *ent)
ent->client->bleedtick = 4; ent->client->bleedtick = 4;
//Elder: added //Elder: added
ent->client->isBandaging = qtrue; ent->client->isBandaging = qtrue;
ent->client->ps.stats[STAT_RQ3] &= !RQ3_LEGDAMAGE; //Elder: moved to g_active where it will be unset after 2 bleedticks
//ent->client->ps.stats[STAT_RQ3] &= !RQ3_LEGDAMAGE;
} }
else else
{ {
@ -1865,6 +1866,10 @@ void toggleSemi(gentity_t *ent){
/* Hawkins. Reaction weapon command */ /* Hawkins. Reaction weapon command */
void Cmd_Weapon(gentity_t *ent) void Cmd_Weapon(gentity_t *ent)
{ {
//Elder: debug code
//G_Printf("PERS_WEAPONMODES: %d\n", ent->client->ps.persistant[PERS_WEAPONMODES]);
//Elder: added brackets, and-ops and not-ops instead of logical ops
switch(ent->s.weapon){ switch(ent->s.weapon){
case WP_SSG3000: case WP_SSG3000:
// zoom is done by client. zoom 3 levels, then zoom out // zoom is done by client. zoom 3 levels, then zoom out
@ -1884,7 +1889,7 @@ void Cmd_Weapon(gentity_t *ent)
// semiauto toggle (increase accuracy) // semiauto toggle (increase accuracy)
if ((ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_MK23MODE) == RQ3_MK23MODE) if ((ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_MK23MODE) == RQ3_MK23MODE)
{ {
ent->client->ps.persistant[PERS_WEAPONMODES] &= !RQ3_MK23MODE; ent->client->ps.persistant[PERS_WEAPONMODES] &= ~RQ3_MK23MODE;
trap_SendServerCommand( ent-g_entities, va("print \"Switched to full automatic.\n\"")); trap_SendServerCommand( ent-g_entities, va("print \"Switched to full automatic.\n\""));
} }
else else
@ -1897,7 +1902,7 @@ void Cmd_Weapon(gentity_t *ent)
// 3rb/full auto toggle // 3rb/full auto toggle
if ((ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_M4MODE) == RQ3_M4MODE) if ((ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_M4MODE) == RQ3_M4MODE)
{ {
ent->client->ps.persistant[PERS_WEAPONMODES] &= !RQ3_M4MODE; ent->client->ps.persistant[PERS_WEAPONMODES] &= ~RQ3_M4MODE;
trap_SendServerCommand( ent-g_entities, va("print \"Switched to full automatic.\n\"")); trap_SendServerCommand( ent-g_entities, va("print \"Switched to full automatic.\n\""));
} }
else else
@ -1910,7 +1915,7 @@ void Cmd_Weapon(gentity_t *ent)
// 3rb/full auto toggle // 3rb/full auto toggle
if ((ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_MP5MODE) == RQ3_MP5MODE) if ((ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_MP5MODE) == RQ3_MP5MODE)
{ {
ent->client->ps.persistant[PERS_WEAPONMODES] &= !RQ3_MP5MODE; ent->client->ps.persistant[PERS_WEAPONMODES] &= ~RQ3_MP5MODE;
trap_SendServerCommand( ent-g_entities, va("print \"Switched to full automatic.\n\"")); trap_SendServerCommand( ent-g_entities, va("print \"Switched to full automatic.\n\""));
} }
else else
@ -1924,7 +1929,7 @@ void Cmd_Weapon(gentity_t *ent)
if ((ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_KNIFEMODE) == RQ3_KNIFEMODE) if ((ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_KNIFEMODE) == RQ3_KNIFEMODE)
{ {
//Elder: added //Elder: added
ent->client->ps.persistant[PERS_WEAPONMODES] &= !RQ3_KNIFEMODE; ent->client->ps.persistant[PERS_WEAPONMODES] &= ~RQ3_KNIFEMODE;
trap_SendServerCommand( ent-g_entities, va("print \"Switched to throwing.\n\"")); trap_SendServerCommand( ent-g_entities, va("print \"Switched to throwing.\n\""));
} }
else else
@ -1945,25 +1950,37 @@ void Cmd_Weapon(gentity_t *ent)
break; break;
case WP_GRENADE: case WP_GRENADE:
// short, medium, long throws // short, medium, long throws
if (ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENSHORT == RQ3_GRENSHORT && ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENMED == RQ3_GRENMED) if ( (ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENSHORT) == RQ3_GRENSHORT &&
(ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENMED) == RQ3_GRENMED)
{//Going into Short {//Going into Short
ent->client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENSHORT; //Set the short flag ent->client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENSHORT; //Set the short flag
ent->client->ps.persistant[PERS_WEAPONMODES] |= !RQ3_GRENMED; //unset the med flag ent->client->ps.persistant[PERS_WEAPONMODES] &= ~RQ3_GRENMED; //unset the med flag
trap_SendServerCommand( ent-g_entities, va("print \"Grenade set for short range throw.\n\"")); trap_SendServerCommand( ent-g_entities, va("print \"Grenade set for short range throw.\n\""));
} }
else if (ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENSHORT == RQ3_GRENSHORT) else if ( (ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENSHORT) == RQ3_GRENSHORT)
{//Going into Med {//Going into Med
ent->client->ps.persistant[PERS_WEAPONMODES] |= !RQ3_GRENSHORT; //unset the short flag ent->client->ps.persistant[PERS_WEAPONMODES] &= ~RQ3_GRENSHORT; //unset the short flag
ent->client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENMED; //Set the med flag ent->client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENMED; //Set the med flag
trap_SendServerCommand( ent-g_entities, va("print \"Grenade set for medium range throw.\n\"")); trap_SendServerCommand( ent-g_entities, va("print \"Grenade set for medium range throw.\n\""));
} }
else if (ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENMED == RQ3_GRENMED) else if ( (ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENMED) == RQ3_GRENMED)
{//Going into Long {//Going into Long
ent->client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENSHORT; //Set the short flag ent->client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENSHORT; //Set the short flag
ent->client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENMED; //Set the med flag ent->client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENMED; //Set the med flag
trap_SendServerCommand( ent-g_entities, va("print \"Grenade set for long range throw.\n\"")); trap_SendServerCommand( ent-g_entities, va("print \"Grenade set for long range throw.\n\""));
} }
//Elder: added
else {
G_Printf("Cmd_Weapon_f: Received bad grenade toggle\n");
}
/* Elder: debugging code
G_Printf("Grenade toggle- Short: %d, Medium: %d, Long: %d\n",
(ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENSHORT) == RQ3_GRENSHORT,
(ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENMED) == RQ3_GRENMED,
(ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENSHORT) == RQ3_GRENSHORT &&
(ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_GRENMED) == RQ3_GRENMED);
*/
break; break;
default: default:
break; break;

View File

@ -493,7 +493,6 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int
if ( self->client ) if ( self->client )
{ {
// Hawkins put spread back and zoom out // Hawkins put spread back and zoom out
//Elder: removed
self->client->zoomed = 0; self->client->zoomed = 0;
self->client->bleeding = 0; self->client->bleeding = 0;
//targ->client->bleedcount = 0; //targ->client->bleedcount = 0;

View File

@ -1025,7 +1025,8 @@ void Weapon_SSG3000_Fire(gentity_t *ent)
{ {
//Elder: Don't print - will broadcast to server //Elder: Don't print - will broadcast to server
//G_Printf("Zoom Level: %d\n", ent->client->zoomed); //G_Printf("Zoom Level: %d\n", ent->client->zoomed);
Bullet_Fire( ent, ( ent->client->zoomed?0:SNIPER_SPREAD), SNIPER_DAMAGE, MOD_SNIPER); //Elder: changed to use RQ3Spread as well
Bullet_Fire( ent, ( ent->client->zoomed? 0:RQ3Spread(ent, SNIPER_SPREAD)), SNIPER_DAMAGE, MOD_SNIPER);
} }