CHEGrenadeProjectile* CHEGrenadeProjectile::Create( const Vector &position, const QAngle &angles, const Vector &velocity, const AngularImpulse &angVelocity, CBaseCombatCharacter *pOwner, float timer ) { CHEGrenadeProjectile *pGrenade = (CHEGrenadeProjectile*)CBaseEntity::Create( "hegrenade_projectile", position, angles, pOwner ); // Set the timer for 1 second less than requested. We're going to issue a SOUND_DANGER // one second before detonation. pGrenade->SetDetonateTimerLength( 1.5 ); pGrenade->SetAbsVelocity( velocity ); pGrenade->SetupInitialTransmittedGrenadeVelocity( velocity ); pGrenade->SetThrower( pOwner ); pGrenade->SetGravity( BaseClass::GetGrenadeGravity() ); pGrenade->SetFriction( BaseClass::GetGrenadeFriction() ); pGrenade->SetElasticity( BaseClass::GetGrenadeElasticity() ); pGrenade->m_flDamage = 100; pGrenade->m_DmgRadius = pGrenade->m_flDamage * 3.5f; pGrenade->ChangeTeam( pOwner->GetTeamNumber() ); pGrenade->ApplyLocalAngularVelocityImpulse( angVelocity ); // make NPCs afaid of it while in the air pGrenade->SetThink( &CHEGrenadeProjectile::DangerSoundThink ); pGrenade->SetNextThink( gpGlobals->curtime ); return pGrenade; }
CHEGrenadeProjectile* CHEGrenadeProjectile::Create( const Vector &position, const QAngle &angles, const Vector &velocity, const AngularImpulse &angVelocity, CBaseCombatCharacter *pOwner, float timer ) { CHEGrenadeProjectile *pGrenade = (CHEGrenadeProjectile*)CBaseEntity::Create( "hegrenade_projectile", position, angles, pOwner ); // Set the timer for 1 second less than requested. We're going to issue a SOUND_DANGER // one second before detonation. pGrenade->SetMoveType( MOVETYPE_FLYGRAVITY ); pGrenade->SetMoveCollide( MOVECOLLIDE_FLY_BOUNCE ); pGrenade->SetTimer( timer - 1.5 ); pGrenade->SetAbsVelocity( velocity ); pGrenade->SetOwner( pOwner ); pGrenade->m_flDamage = 100; pGrenade->ChangeTeam( pOwner->GetTeamNumber() ); return pGrenade; }