mirror of
https://github.com/ValveSoftware/source-sdk-2013.git
synced 2025-04-08 18:40:26 +03:00
Fix organs spawning due to non-Vita-Saw damage
With this commit, organs only spawn when the weapon dealing damage is the Vita-Saw - not just when the Medic deals damage and is holding the Vita-Saw.
This commit is contained in:
parent
65aa7c910e
commit
ed11b204b2
@ -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" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user