From 725f2284feb07098d8a8d7d6161a427afc9cf299 Mon Sep 17 00:00:00 2001 From: Victor Chow Date: Mon, 11 Jun 2001 23:02:21 +0000 Subject: [PATCH] Elder: Fixed some of the new persistant stuff + sniper spread --- reaction/game/g_active.c | 8 +++++++- reaction/game/g_client.c | 15 +++++++++++++-- reaction/game/g_cmds.c | 39 ++++++++++++++++++++++++++++----------- reaction/game/g_combat.c | 1 - reaction/game/g_weapon.c | 3 ++- 5 files changed, 50 insertions(+), 16 deletions(-) diff --git a/reaction/game/g_active.c b/reaction/game/g_active.c index 1a04e6b8..66f55b0c 100644 --- a/reaction/game/g_active.c +++ b/reaction/game/g_active.c @@ -581,8 +581,12 @@ void ClientTimerActions( gentity_t *ent, int msec ) { //Blaze: Do bandaging stuff 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--; + //Elder: added + if (ent->client->bleedtick == 2) { + ent->client->ps.stats[STAT_RQ3] &= !RQ3_LEGDAMAGE; + } } else if (ent->client->bleedtick == 1) { @@ -883,6 +887,8 @@ void ThrowWeapon( gentity_t *ent ) return; } + //Elder: have to add a reloading case + weap = 0; if (client->ps.stats[STAT_UNIQUEWEAPONS] > 0) { diff --git a/reaction/game/g_client.c b/reaction/game/g_client.c index 06e3069a..a4cb491d 100644 --- a/reaction/game/g_client.c +++ b/reaction/game/g_client.c @@ -989,6 +989,12 @@ void ClientBegin( int clientNum ) { memset( &client->ps, 0, sizeof( client->ps ) ); 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 ClientSpawn( ent ); @@ -1094,6 +1100,7 @@ void ClientSpawn(gentity_t *ent) { // savedAreaBits = client->areabits; accuracy_hits = client->accuracy_hits; accuracy_shots = client->accuracy_shots; + for ( i = 0 ; i < MAX_PERSISTANT ; i++ ) { persistant[i] = client->ps.persistant[i]; } @@ -1112,7 +1119,7 @@ void ClientSpawn(gentity_t *ent) { client->accuracy_hits = accuracy_hits; client->accuracy_shots = accuracy_shots; client->lastkilled_client = -1; - + for ( i = 0 ; i < MAX_PERSISTANT ; i++ ) { client->ps.persistant[i] = persistant[i]; } @@ -1223,7 +1230,8 @@ void ClientSpawn(gentity_t *ent) { client->zoomed=0; //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 client->isBandaging = qfalse; @@ -1262,6 +1270,9 @@ void ClientSpawn(gentity_t *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 ClientEndFrame( ent ); diff --git a/reaction/game/g_cmds.c b/reaction/game/g_cmds.c index 883bb2a4..1cea22b1 100644 --- a/reaction/game/g_cmds.c +++ b/reaction/game/g_cmds.c @@ -1611,7 +1611,8 @@ void Cmd_Bandage (gentity_t *ent) ent->client->bleedtick = 4; //Elder: added 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 { @@ -1865,6 +1866,10 @@ void toggleSemi(gentity_t *ent){ /* Hawkins. Reaction weapon command */ 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){ case WP_SSG3000: // 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) 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\"")); } else @@ -1897,7 +1902,7 @@ void Cmd_Weapon(gentity_t *ent) // 3rb/full auto toggle 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\"")); } else @@ -1910,7 +1915,7 @@ void Cmd_Weapon(gentity_t *ent) // 3rb/full auto toggle 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\"")); } else @@ -1924,7 +1929,7 @@ void Cmd_Weapon(gentity_t *ent) if ((ent->client->ps.persistant[PERS_WEAPONMODES] & RQ3_KNIFEMODE) == RQ3_KNIFEMODE) { //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\"")); } else @@ -1945,25 +1950,37 @@ void Cmd_Weapon(gentity_t *ent) break; case WP_GRENADE: // 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 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\"")); } - 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 - 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 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 ent->client->ps.persistant[PERS_WEAPONMODES] |= RQ3_GRENSHORT; //Set the short 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\"")); - } + } + //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; default: break; diff --git a/reaction/game/g_combat.c b/reaction/game/g_combat.c index d87f5fd0..9849e9e2 100644 --- a/reaction/game/g_combat.c +++ b/reaction/game/g_combat.c @@ -493,7 +493,6 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int if ( self->client ) { // Hawkins put spread back and zoom out - //Elder: removed self->client->zoomed = 0; self->client->bleeding = 0; //targ->client->bleedcount = 0; diff --git a/reaction/game/g_weapon.c b/reaction/game/g_weapon.c index 22ce5294..b9194b80 100644 --- a/reaction/game/g_weapon.c +++ b/reaction/game/g_weapon.c @@ -1025,7 +1025,8 @@ void Weapon_SSG3000_Fire(gentity_t *ent) { //Elder: Don't print - will broadcast to server //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); }