diff --git a/dlls/gearbox/displacer.cpp b/dlls/gearbox/displacer.cpp index 6af868bd..d134de53 100644 --- a/dlls/gearbox/displacer.cpp +++ b/dlls/gearbox/displacer.cpp @@ -56,7 +56,6 @@ void CDisplacerBall::Spawn(void) pev->frame = 0; pev->scale = 0.75; - SetTouch( &CDisplacerBall::Touch ); SetThink( &CDisplacerBall::FlyThink ); pev->nextthink = gpGlobals->time + 0.2; UTIL_SetSize(pev, Vector(0, 0, 0), Vector(0, 0, 0)); @@ -154,9 +153,7 @@ void CDisplacerBall::SelfCreate(entvars_t *pevOwner,Vector vecStart) void CDisplacerBall::Touch(CBaseEntity *pOther) { - // Do not collide with the owner. - if (ENT(pOther->pev) == pev->owner || (ENT(pOther->pev) == VARS(pev->owner)->owner)) - return; + pev->velocity = g_vecZero; TraceResult tr; Vector vecSpot; @@ -164,11 +161,7 @@ void CDisplacerBall::Touch(CBaseEntity *pOther) pev->enemy = pOther->edict(); CBaseEntity *pTarget = NULL; - if (!pOther->pev->takedamage) - { - EMIT_SOUND_DYN(ENT(pev), CHAN_WEAPON, "weapons/displacer_impact.wav", 1, ATTN_NORM, 0, 100); - UTIL_MuzzleLight( pOther->pev->origin, 160.0f, 255, 180, 96, 1.0f, 100.0f ); - } + EMIT_SOUND(ENT(pev), CHAN_WEAPON, "weapons/displacer_impact.wav", 0.9f, ATTN_NORM); if( ( g_pGameRules->IsMultiplayer() && !g_pGameRules->IsCoOp() ) && pOther->IsPlayer() ) { @@ -219,7 +212,7 @@ void CDisplacerBall::Circle( void ) WRITE_COORD(pev->origin.z); WRITE_COORD(pev->origin.x); WRITE_COORD(pev->origin.y); - WRITE_COORD(pev->origin.z + 800); // reach damage radius over .2 seconds + WRITE_COORD(pev->origin.z + 800.0f); // reach damage radius over .2 seconds WRITE_SHORT(iRingSprite); WRITE_BYTE(0); // startframe WRITE_BYTE(0); // framerate @@ -237,8 +230,6 @@ void CDisplacerBall::Circle( void ) void CDisplacerBall::KillThink( void ) { - if( pRemoveEnt ) - UTIL_Remove( pRemoveEnt ); SetThink( &CDisplacerBall::ExplodeThink ); pev->nextthink = gpGlobals->time + 0.2f; } @@ -335,7 +326,7 @@ BOOL CDisplacer::PlayEmptySound(void) { if (m_iPlayEmptySound) { - EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "buttons/button11.wav", 1, ATTN_NORM); + EMIT_SOUND(m_pPlayer->edict(), CHAN_WEAPON, "buttons/button11.wav", 0.9f, ATTN_NORM); m_iPlayEmptySound = 0; return 0; } @@ -395,7 +386,7 @@ void CDisplacer::Precache(void) //========================================================= BOOL CDisplacer::Deploy() { - return DefaultDeploy("models/v_displacer.mdl", "models/p_displacer.mdl", DISPLACER_DRAW, "displacer", UseDecrement()); + return DefaultDeploy("models/v_displacer.mdl", "models/p_displacer.mdl", DISPLACER_DRAW, "egon", UseDecrement()); } //========================================================= @@ -421,7 +412,7 @@ void CDisplacer::SecondaryAttack(void) if (m_fFireOnEmpty || !CanFireDisplacer(DISPLACER_SECONDARY_USAGE)) { PlayEmptySound(); - m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3f; + m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.5f; return; } @@ -443,7 +434,7 @@ void CDisplacer::PrimaryAttack() if ( m_fFireOnEmpty || !CanFireDisplacer(DISPLACER_PRIMARY_USAGE)) { PlayEmptySound(); - m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.3f; + m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.5f; return; } m_iFireMode = FIREMODE_FORWARD; @@ -490,10 +481,10 @@ void CDisplacer::ClearSpin( void ) switch (m_iFireMode) { case FIREMODE_FORWARD: - STOP_SOUND(ENT(pev), CHAN_WEAPON, "weapons/displacer_spin.wav"); + STOP_SOUND(m_pPlayer->edict(), CHAN_WEAPON, "weapons/displacer_spin.wav"); break; case FIREMODE_BACKWARD: - STOP_SOUND(ENT(pev), CHAN_WEAPON, "weapons/displacer_spin2.wav"); + STOP_SOUND(m_pPlayer->edict(), CHAN_WEAPON, "weapons/displacer_spin2.wav"); break; } } @@ -509,12 +500,12 @@ void CDisplacer::SpinUp( void ) if( m_iFireMode == FIREMODE_FORWARD ) { - EMIT_SOUND( edict(), CHAN_WEAPON, "weapons/displacer_spin.wav", 1, ATTN_NORM ); + EMIT_SOUND( m_pPlayer->edict(), CHAN_WEAPON, "weapons/displacer_spin.wav", 1, ATTN_NORM ); SetThink (&CDisplacer::Displace); } else { - EMIT_SOUND( edict(), CHAN_WEAPON, "weapons/displacer_spin2.wav", 1, ATTN_NORM ); + EMIT_SOUND( m_pPlayer->edict(), CHAN_WEAPON, "weapons/displacer_spin2.wav", 1, ATTN_NORM ); SetThink (&CDisplacer::Teleport); } pev->nextthink = gpGlobals->time + 0.9; @@ -583,6 +574,9 @@ void CDisplacer::Teleport( void ) if( pTarget && /*HACK*/( tmp != Vector( 0, 0, 0 )/*HACK*/ ) ) { + if( (m_pPlayer->m_afPhysicsFlags & PFLAG_ONROPE) ) + m_pPlayer->LetGoRope(); + // UTIL_ScreenFade( m_pPlayer, Vector( 0, 200, 0 ), 0.5, 0.5, 255, FFADE_IN ); m_flTimeWeaponIdle = UTIL_WeaponTimeBase(); @@ -619,7 +613,7 @@ void CDisplacer::Teleport( void ) } else { - EMIT_SOUND( edict(), CHAN_BODY, "buttons/button11.wav", 1, ATTN_NORM ); + EMIT_SOUND( m_pPlayer->edict(), CHAN_WEAPON, "buttons/button11.wav", 0.9f, ATTN_NORM ); m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 3.0; m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.9; } diff --git a/dlls/gearbox/displacerball.h b/dlls/gearbox/displacerball.h index 0fac783f..f58eb7a2 100644 --- a/dlls/gearbox/displacerball.h +++ b/dlls/gearbox/displacerball.h @@ -28,7 +28,5 @@ public: void ArmBeam( int iSide ); int m_iBeams; - - CBaseEntity *pRemoveEnt; }; #endif diff --git a/dlls/gearbox/eagle.cpp b/dlls/gearbox/eagle.cpp index f3738254..5a45dc8c 100644 --- a/dlls/gearbox/eagle.cpp +++ b/dlls/gearbox/eagle.cpp @@ -91,11 +91,13 @@ void CEagle::Holster( int skiplocal /* = 0 */ ) m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5; SendWeaponAnim( DEAGLE_HOLSTER ); +#if !CLIENT_DLL if (m_pEagleLaser) { m_pEagleLaser->Killed( NULL, GIB_NEVER ); m_pEagleLaser = NULL; } +#endif } void CEagle::SecondaryAttack() @@ -167,7 +169,8 @@ void CEagle::PrimaryAttack() vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, Vector( flSpread, flSpread, flSpread ), 8192, BULLET_PLAYER_EAGLE, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed ); m_flNextPrimaryAttack = UTIL_WeaponTimeBase()+ 0.5; #if !CLIENT_DLL - m_pEagleLaser->Suspend( 0.6 ); + if (m_pEagleLaser) + m_pEagleLaser->Suspend( 0.6f ); #endif } else diff --git a/dlls/monsters.cpp b/dlls/monsters.cpp index 63489b13..4197df9f 100644 --- a/dlls/monsters.cpp +++ b/dlls/monsters.cpp @@ -2200,7 +2200,7 @@ int CBaseMonster::IRelationship( CBaseEntity *pTarget ) /*INSECT*/ { R_FR ,R_FR ,R_FR ,R_FR ,R_FR ,R_NO ,R_FR ,R_FR ,R_FR ,R_FR ,R_NO ,R_FR, R_NO, R_NO, R_NO, R_NO, R_NO}, /*PLAYERALLY*/ { R_NO ,R_DL ,R_AL ,R_AL ,R_DL ,R_DL ,R_DL ,R_DL ,R_DL ,R_DL ,R_NO ,R_NO, R_NO, R_NO, R_DL, R_DL, R_DL}, /*PBIOWEAPON*/ { R_NO ,R_NO ,R_DL ,R_DL ,R_DL ,R_DL ,R_DL ,R_DL ,R_DL ,R_DL ,R_NO ,R_DL, R_NO, R_DL, R_DL, R_DL, R_DL}, - /*ABIOWEAPON*/ { R_NO ,R_NO ,R_DL ,R_DL ,R_DL ,R_AL ,R_NO ,R_DL ,R_DL ,R_NO ,R_NO ,R_DL, R_DL, R_NO, R_DL, R_NO, R_DL}, + /*ABIOWEAPON*/ { R_NO ,R_NO ,R_DL ,R_DL ,R_DL ,R_AL ,R_NO ,R_DL ,R_DL ,R_NO ,R_NO ,R_DL, R_DL, R_NO, R_DL, R_DL, R_DL}, /*XPREDATOR*/ { R_NO ,R_DL ,R_DL ,R_DL ,R_DL ,R_NO ,R_NO ,R_NO ,R_DL ,R_DL ,R_NO ,R_NO, R_NO, R_AL, R_AL, R_AL, R_DL}, /*XSHOCK*/ { R_NO ,R_DL ,R_HT ,R_DL ,R_HT ,R_NO ,R_NO ,R_NO ,R_NO ,R_NO ,R_NO ,R_DL, R_NO, R_NO, R_AL, R_AL, R_HT}, /*PLRALLYMIL*/ { R_NO ,R_DL ,R_AL ,R_DL ,R_DL ,R_HT ,R_DL ,R_DL ,R_DL ,R_DL ,R_NO ,R_DL, R_NO, R_NO, R_DL, R_HT, R_AL} diff --git a/dlls/player.cpp b/dlls/player.cpp index c0194580..accdaa1b 100644 --- a/dlls/player.cpp +++ b/dlls/player.cpp @@ -1931,13 +1931,7 @@ void CBasePlayer::PreThink( void ) if( !m_pRope->MoveDown( flDelta ) ) { //Let go of the rope, detach. - Solokiller - pev->movetype = MOVETYPE_WALK; - pev->solid = SOLID_SLIDEBOX; - - m_afPhysicsFlags &= ~PFLAG_ONROPE; - m_pRope->DetachObject(); - m_pRope = NULL; - m_bIsClimbing = false; + LetGoRope(); } } else @@ -1954,12 +1948,7 @@ void CBasePlayer::PreThink( void ) else if( !m_pRope->MoveDown( flDelta ) ) { //Let go of the rope, detach. - Solokiller - pev->movetype = MOVETYPE_WALK; - pev->solid = SOLID_SLIDEBOX; - m_afPhysicsFlags &= ~PFLAG_ONROPE; - m_pRope->DetachObject(); - m_pRope = NULL; - m_bIsClimbing = false; + LetGoRope(); } } } @@ -1992,23 +1981,18 @@ void CBasePlayer::PreThink( void ) if( m_afButtonPressed & IN_JUMP ) { //We've jumped off the rope, give us some momentum - Solokiller - pev->movetype = MOVETYPE_WALK; - pev->solid = SOLID_SLIDEBOX; - this->m_afPhysicsFlags &= ~PFLAG_ONROPE; + CRope* rope = m_pRope; + LetGoRope(); Vector vecDir = gpGlobals->v_up * 165.0 + gpGlobals->v_forward * 150.0; - Vector vecVelocity = m_pRope->GetAttachedObjectsVelocity() * 2; + Vector vecVelocity = rope->GetAttachedObjectsVelocity() * 2; vecVelocity = vecVelocity.Normalize(); vecVelocity = vecVelocity * 200; pev->velocity = vecVelocity + vecDir; - - m_pRope->DetachObject(); - m_pRope = NULL; - m_bIsClimbing = false; } return; } @@ -2096,6 +2080,21 @@ void CBasePlayer::PreThink( void ) pev->velocity = g_vecZero; } } + +void CBasePlayer::LetGoRope() +{ + //Let go of the rope, detach. - Solokiller + pev->movetype = MOVETYPE_WALK; + pev->solid = SOLID_SLIDEBOX; + m_afPhysicsFlags &= ~PFLAG_ONROPE; + if (m_pRope) + { + m_pRope->DetachObject(); + m_pRope = NULL; + } + m_bIsClimbing = false; +} + /* Time based Damage works as follows: 1) There are several types of timebased damage: @@ -4355,17 +4354,7 @@ BOOL CBasePlayer::FBecomeProne( void ) if( (m_afPhysicsFlags & PFLAG_ONROPE) ) { - pev->movetype = MOVETYPE_WALK; - pev->solid = SOLID_SLIDEBOX; - this->m_afPhysicsFlags &= ~PFLAG_ONROPE; - - if (m_pRope) - { - m_pRope->DetachObject(); - m_pRope = NULL; - } - - m_bIsClimbing = false; + LetGoRope(); } return TRUE; diff --git a/dlls/player.h b/dlls/player.h index b69f4e4c..7589d81d 100644 --- a/dlls/player.h +++ b/dlls/player.h @@ -403,6 +403,8 @@ public: } CRope* GetRope() { return m_pRope; } + + void LetGoRope(); }; #define AUTOAIM_2DEGREES 0.0348994967025