void Explode( float magnitude ) { //Create a concussive explosion CPASFilter filter( GetAbsOrigin() ); Vector vecForward; AngleVectors( GetAbsAngles(), &vecForward ); TE_ConcussiveExplosion( filter, 0.0, &GetAbsOrigin(),//position 1.0f, //scale 256*magnitude, //radius 175*magnitude, //magnitude &vecForward ); //normal int colorRamp = random->RandomInt( 128, 255 ); //Shockring CBroadcastRecipientFilter filter2; te->BeamRingPoint( filter2, 0, GetAbsOrigin(), //origin 16, //start radius 300*magnitude, //end radius m_spriteTexture, //texture 0, //halo index 0, //start frame 2, //framerate 0.3f, //life 128, //width 16, //spread 0, //amplitude colorRamp, //r colorRamp, //g 255, //g 24, //a 128 //speed ); //Do the radius damage RadiusDamage( CTakeDamageInfo( this, GetOwnerEntity(), 200, DMG_BLAST|DMG_DISSOLVE ), GetAbsOrigin(), 256, CLASS_NONE, NULL ); UTIL_Remove( this ); }
// For playback from external tools virtual void TriggerTempEntity( KeyValues *pKeyValues ) { g_pEffects->SuppressEffectsSounds( true ); SuppressParticleEffects( true ); // While playing back, suppress recording bool bIsRecording = clienttools->IsInRecordingMode(); clienttools->EnableRecordingMode( false ); CBroadcastRecipientFilter filter; TERecordingType_t type = (TERecordingType_t)pKeyValues->GetInt( "te" ); switch( type ) { case TE_DYNAMIC_LIGHT: TE_DynamicLight( filter, 0.0f, pKeyValues ); break; case TE_WORLD_DECAL: TE_WorldDecal( filter, 0.0f, pKeyValues ); break; case TE_DISPATCH_EFFECT: DispatchEffect( filter, 0.0f, pKeyValues ); break; case TE_MUZZLE_FLASH: { Vector vecOrigin; QAngle angles; vecOrigin.x = pKeyValues->GetFloat( "originx" ); vecOrigin.y = pKeyValues->GetFloat( "originy" ); vecOrigin.z = pKeyValues->GetFloat( "originz" ); angles.x = pKeyValues->GetFloat( "anglesx" ); angles.y = pKeyValues->GetFloat( "anglesy" ); angles.z = pKeyValues->GetFloat( "anglesz" ); float flScale = pKeyValues->GetFloat( "scale" ); int nType = pKeyValues->GetInt( "type" ); TE_MuzzleFlash( filter, 0.0f, vecOrigin, angles, flScale, nType ); } break; case TE_ARMOR_RICOCHET: { Vector vecOrigin, vecDirection; vecOrigin.x = pKeyValues->GetFloat( "originx" ); vecOrigin.y = pKeyValues->GetFloat( "originy" ); vecOrigin.z = pKeyValues->GetFloat( "originz" ); vecDirection.x = pKeyValues->GetFloat( "directionx" ); vecDirection.y = pKeyValues->GetFloat( "directiony" ); vecDirection.z = pKeyValues->GetFloat( "directionz" ); TE_ArmorRicochet( filter, 0.0f, &vecOrigin, &vecDirection ); } break; case TE_METAL_SPARKS: { Vector vecOrigin, vecDirection; vecOrigin.x = pKeyValues->GetFloat( "originx" ); vecOrigin.y = pKeyValues->GetFloat( "originy" ); vecOrigin.z = pKeyValues->GetFloat( "originz" ); vecDirection.x = pKeyValues->GetFloat( "directionx" ); vecDirection.y = pKeyValues->GetFloat( "directiony" ); vecDirection.z = pKeyValues->GetFloat( "directionz" ); TE_MetalSparks( filter, 0.0f, &vecOrigin, &vecDirection ); } break; case TE_SMOKE: { Vector vecOrigin, vecDirection; vecOrigin.x = pKeyValues->GetFloat( "originx" ); vecOrigin.y = pKeyValues->GetFloat( "originy" ); vecOrigin.z = pKeyValues->GetFloat( "originz" ); float flScale = pKeyValues->GetFloat( "scale" ); int nFrameRate = pKeyValues->GetInt( "framerate" ); TE_Smoke( filter, 0.0f, &vecOrigin, 0, flScale, nFrameRate ); } break; case TE_SPARKS: { Vector vecOrigin, vecDirection; vecOrigin.x = pKeyValues->GetFloat( "originx" ); vecOrigin.y = pKeyValues->GetFloat( "originy" ); vecOrigin.z = pKeyValues->GetFloat( "originz" ); vecDirection.x = pKeyValues->GetFloat( "directionx" ); vecDirection.y = pKeyValues->GetFloat( "directiony" ); vecDirection.z = pKeyValues->GetFloat( "directionz" ); int nMagnitude = pKeyValues->GetInt( "magnitude" ); int nTrailLength = pKeyValues->GetInt( "traillength" ); TE_Sparks( filter, 0.0f, &vecOrigin, nMagnitude, nTrailLength, &vecDirection ); } break; case TE_BLOOD_STREAM: TE_BloodStream( filter, 0.0f, pKeyValues ); break; case TE_BLOOD_SPRITE: TE_BloodSprite( filter, 0.0f, pKeyValues ); break; case TE_BREAK_MODEL: TE_BreakModel( filter, 0.0f, pKeyValues ); break; case TE_GLOW_SPRITE: TE_GlowSprite( filter, 0.0f, pKeyValues ); break; case TE_PHYSICS_PROP: TE_PhysicsProp( filter, 0.0f, pKeyValues ); break; case TE_SPRITE_SINGLE: TE_Sprite( filter, 0.0f, pKeyValues ); break; case TE_SPRITE_SPRAY: TE_SpriteSpray( filter, 0.0f, pKeyValues ); break; case TE_SHATTER_SURFACE: TE_ShatterSurface( filter, 0.0f, pKeyValues ); break; case TE_DECAL: TE_Decal( filter, 0.0f, pKeyValues ); break; case TE_PROJECT_DECAL: TE_ProjectDecal( filter, 0.0f, pKeyValues ); break; case TE_EXPLOSION: TE_Explosion( filter, 0.0f, pKeyValues ); break; #ifdef HL2_DLL case TE_CONCUSSIVE_EXPLOSION: TE_ConcussiveExplosion( filter, 0.0f, pKeyValues ); break; #endif } SuppressParticleEffects( false ); g_pEffects->SuppressEffectsSounds( false ); clienttools->EnableRecordingMode( bIsRecording ); }