Adding Muzzle Flashes that lights up the world
In this tutorial, I will show you how to add dlights to a Half Life 1 Mod (GoldSrc Mod). This tutorial will create a muzzle flash dlight that lights up the world around the player dynamically.
Let’s start. Well navigate to ev_hldm.h and scroll to the bottom. After that, add this:
void EV_HLDM_MuzzleFlash( vec3_t pos, float amount );
Then, we will open ev_hldm.cpp. Find:
// play a strike sound based on the texture that was hit by the attack traceline. VecSrc/VecEnd are the
// original traceline endpoints used by the attacker, iBulletType is the type of bullet that hit the texture.
// returns volume of strike instrument (crowbar) to play
float EV_HLDM_PlayTextureSound( int idx, pmtrace_t *ptr, float *vecSrc, float *vecEnd, int iBulletType )
Below that, add this:
void EV_HLDM_MuzzleFlash(vec3_t pos, float amount)
{
// make a dlight first
dlight_t *dl = gEngfuncs.pEfxAPI->CL_AllocDlight(0);
// Original color values
int originalR = 231;
int originalG = 219;
int originalB = 14;
// Randomize color components within the range of +/- 20
dl->color.r = originalR + gEngfuncs.pfnRandomLong(-20, 20);
dl->color.g = originalG + gEngfuncs.pfnRandomLong(-20, 20);
dl->color.b = originalB + gEngfuncs.pfnRandomLong(0, 0);
// Randomize the die value by +/- 0.01
dl->die = gEngfuncs.GetClientTime() + 0.05 + gEngfuncs.pfnRandomFloat(-0.01, 0.01);
// Randomize the radius based on amount
dl->radius = gEngfuncs.pfnRandomFloat(245.0f, 256.0f);
// Randomize the decay value
dl->decay = gEngfuncs.pfnRandomFloat(400.0f, 600.0f);
}
Then, find the function definition:
void EV_FireWeaponName(event_args_t *args) // replace WeaponName with your weapon’s name
Find this in that function:
EV_GetGunPosition( args, vecSrc, origin );
Just after that, add this:
// mazor begin
EV_HLDM_MuzzleFlash( vecSrc, 1.0 + gEngfuncs.pfnRandomFloat( -0.2, 0.2 ) );
// mazor end
And, you’re done!
Credits and Reference
This is not entirely made by me. I modified some elements of the code. The original one is from VERC and TWHL. https://twhl.info/wiki/page/VERC%3A_Adding_muzzle_flashes_that_also_light_up_world_brushes https://web.archive.org/web/20061027233737/http://collective.valve-erc.com/index.php?doc=1031137353-13157900