diff --git a/src/game/server/tf/tf_player.cpp b/src/game/server/tf/tf_player.cpp index 0881d2491..b83535ce5 100644 --- a/src/game/server/tf/tf_player.cpp +++ b/src/game/server/tf/tf_player.cpp @@ -9096,44 +9096,40 @@ int CTFPlayer::OnTakeDamage( const CTakeDamageInfo &inputInfo ) } } - if ( pTFAttacker && pTFAttacker->IsPlayerClass( TF_CLASS_MEDIC ) ) + if ( pTFAttacker && pTFAttacker->IsPlayerClass( TF_CLASS_MEDIC ) && pWeapon && pWeapon->GetWeaponID() == TF_WEAPON_BONESAW ) { - CTFWeaponBase *pAttackerWeapon = pTFAttacker->GetActiveTFWeapon(); - if ( pAttackerWeapon && pAttackerWeapon->GetWeaponID() == TF_WEAPON_BONESAW ) + CTFBonesaw *pBoneSaw = static_cast< CTFBonesaw* >( pWeapon ); + if ( pBoneSaw->GetBonesawType() == BONESAW_UBER_SAVEDONDEATH ) { - CTFBonesaw *pBoneSaw = static_cast< CTFBonesaw* >( pAttackerWeapon ); - if ( pBoneSaw->GetBonesawType() == BONESAW_UBER_SAVEDONDEATH ) + // Spawn their spleen + CPhysicsProp *pRandomInternalOrgan = dynamic_cast< CPhysicsProp* >( CreateEntityByName( "prop_physics_override" ) ); + if ( pRandomInternalOrgan ) { - // Spawn their spleen - CPhysicsProp *pRandomInternalOrgan = dynamic_cast< CPhysicsProp* >( CreateEntityByName( "prop_physics_override" ) ); - if ( pRandomInternalOrgan ) - { - pRandomInternalOrgan->SetCollisionGroup( COLLISION_GROUP_DEBRIS ); - pRandomInternalOrgan->AddFlag( FL_GRENADE ); - char buf[512]; - Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsOrigin().x, GetAbsOrigin().y, GetAbsOrigin().z ); - pRandomInternalOrgan->KeyValue( "origin", buf ); - Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsAngles().x, GetAbsAngles().y, GetAbsAngles().z ); - pRandomInternalOrgan->KeyValue( "angles", buf ); - pRandomInternalOrgan->KeyValue( "model", "models/player/gibs/random_organ.mdl" ); - pRandomInternalOrgan->KeyValue( "fademindist", "-1" ); - pRandomInternalOrgan->KeyValue( "fademaxdist", "0" ); - pRandomInternalOrgan->KeyValue( "fadescale", "1" ); - pRandomInternalOrgan->KeyValue( "inertiaScale", "1.0" ); - pRandomInternalOrgan->KeyValue( "physdamagescale", "0.1" ); - DispatchSpawn( pRandomInternalOrgan ); - pRandomInternalOrgan->m_takedamage = DAMAGE_YES; // Take damage, otherwise this can block trains - pRandomInternalOrgan->SetHealth( 100 ); - pRandomInternalOrgan->Activate(); + pRandomInternalOrgan->SetCollisionGroup( COLLISION_GROUP_DEBRIS ); + pRandomInternalOrgan->AddFlag( FL_GRENADE ); + char buf[512]; + Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsOrigin().x, GetAbsOrigin().y, GetAbsOrigin().z ); + pRandomInternalOrgan->KeyValue( "origin", buf ); + Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsAngles().x, GetAbsAngles().y, GetAbsAngles().z ); + pRandomInternalOrgan->KeyValue( "angles", buf ); + pRandomInternalOrgan->KeyValue( "model", "models/player/gibs/random_organ.mdl" ); + pRandomInternalOrgan->KeyValue( "fademindist", "-1" ); + pRandomInternalOrgan->KeyValue( "fademaxdist", "0" ); + pRandomInternalOrgan->KeyValue( "fadescale", "1" ); + pRandomInternalOrgan->KeyValue( "inertiaScale", "1.0" ); + pRandomInternalOrgan->KeyValue( "physdamagescale", "0.1" ); + DispatchSpawn( pRandomInternalOrgan ); + pRandomInternalOrgan->m_takedamage = DAMAGE_YES; // Take damage, otherwise this can block trains + pRandomInternalOrgan->SetHealth( 100 ); + pRandomInternalOrgan->Activate(); - Vector vecImpulse = RandomVector( -1.f, 1.f ); - vecImpulse.z = 1.f; - VectorNormalize( vecImpulse ); - Vector vecVelocity = vecImpulse * 250.0; - pRandomInternalOrgan->ApplyAbsVelocityImpulse( vecVelocity ); + Vector vecImpulse = RandomVector( -1.f, 1.f ); + vecImpulse.z = 1.f; + VectorNormalize( vecImpulse ); + Vector vecVelocity = vecImpulse * 250.0; + pRandomInternalOrgan->ApplyAbsVelocityImpulse( vecVelocity ); - pRandomInternalOrgan->ThinkSet( &CBaseEntity::SUB_Remove, gpGlobals->curtime + 5.f, "DieContext" ); - } + pRandomInternalOrgan->ThinkSet( &CBaseEntity::SUB_Remove, gpGlobals->curtime + 5.f, "DieContext" ); } } }