mirror of
https://github.com/ValveSoftware/source-sdk-2013.git
synced 2025-04-18 15:22:47 +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();
|
CTFBonesaw *pBoneSaw = static_cast< CTFBonesaw* >( pWeapon );
|
||||||
if ( pAttackerWeapon && pAttackerWeapon->GetWeaponID() == TF_WEAPON_BONESAW )
|
if ( pBoneSaw->GetBonesawType() == BONESAW_UBER_SAVEDONDEATH )
|
||||||
{
|
{
|
||||||
CTFBonesaw *pBoneSaw = static_cast< CTFBonesaw* >( pAttackerWeapon );
|
// Spawn their spleen
|
||||||
if ( pBoneSaw->GetBonesawType() == BONESAW_UBER_SAVEDONDEATH )
|
CPhysicsProp *pRandomInternalOrgan = dynamic_cast< CPhysicsProp* >( CreateEntityByName( "prop_physics_override" ) );
|
||||||
|
if ( pRandomInternalOrgan )
|
||||||
{
|
{
|
||||||
// Spawn their spleen
|
pRandomInternalOrgan->SetCollisionGroup( COLLISION_GROUP_DEBRIS );
|
||||||
CPhysicsProp *pRandomInternalOrgan = dynamic_cast< CPhysicsProp* >( CreateEntityByName( "prop_physics_override" ) );
|
pRandomInternalOrgan->AddFlag( FL_GRENADE );
|
||||||
if ( pRandomInternalOrgan )
|
char buf[512];
|
||||||
{
|
Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsOrigin().x, GetAbsOrigin().y, GetAbsOrigin().z );
|
||||||
pRandomInternalOrgan->SetCollisionGroup( COLLISION_GROUP_DEBRIS );
|
pRandomInternalOrgan->KeyValue( "origin", buf );
|
||||||
pRandomInternalOrgan->AddFlag( FL_GRENADE );
|
Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsAngles().x, GetAbsAngles().y, GetAbsAngles().z );
|
||||||
char buf[512];
|
pRandomInternalOrgan->KeyValue( "angles", buf );
|
||||||
Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsOrigin().x, GetAbsOrigin().y, GetAbsOrigin().z );
|
pRandomInternalOrgan->KeyValue( "model", "models/player/gibs/random_organ.mdl" );
|
||||||
pRandomInternalOrgan->KeyValue( "origin", buf );
|
pRandomInternalOrgan->KeyValue( "fademindist", "-1" );
|
||||||
Q_snprintf( buf, sizeof( buf ), "%.10f %.10f %.10f", GetAbsAngles().x, GetAbsAngles().y, GetAbsAngles().z );
|
pRandomInternalOrgan->KeyValue( "fademaxdist", "0" );
|
||||||
pRandomInternalOrgan->KeyValue( "angles", buf );
|
pRandomInternalOrgan->KeyValue( "fadescale", "1" );
|
||||||
pRandomInternalOrgan->KeyValue( "model", "models/player/gibs/random_organ.mdl" );
|
pRandomInternalOrgan->KeyValue( "inertiaScale", "1.0" );
|
||||||
pRandomInternalOrgan->KeyValue( "fademindist", "-1" );
|
pRandomInternalOrgan->KeyValue( "physdamagescale", "0.1" );
|
||||||
pRandomInternalOrgan->KeyValue( "fademaxdist", "0" );
|
DispatchSpawn( pRandomInternalOrgan );
|
||||||
pRandomInternalOrgan->KeyValue( "fadescale", "1" );
|
pRandomInternalOrgan->m_takedamage = DAMAGE_YES; // Take damage, otherwise this can block trains
|
||||||
pRandomInternalOrgan->KeyValue( "inertiaScale", "1.0" );
|
pRandomInternalOrgan->SetHealth( 100 );
|
||||||
pRandomInternalOrgan->KeyValue( "physdamagescale", "0.1" );
|
pRandomInternalOrgan->Activate();
|
||||||
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 );
|
Vector vecImpulse = RandomVector( -1.f, 1.f );
|
||||||
vecImpulse.z = 1.f;
|
vecImpulse.z = 1.f;
|
||||||
VectorNormalize( vecImpulse );
|
VectorNormalize( vecImpulse );
|
||||||
Vector vecVelocity = vecImpulse * 250.0;
|
Vector vecVelocity = vecImpulse * 250.0;
|
||||||
pRandomInternalOrgan->ApplyAbsVelocityImpulse( vecVelocity );
|
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