I see what the problem is:
[quote]
if ( m_iHeat >= 200 )
{
m_flCooldownTime = gpGlobals->time + 2.0f; // Shepard : This forces the player to wait 3 seconds for the weapon to cool down
m_flNextPrimaryAttack = 3.0f;//0.15f;
return;
}
if ( m_iHeat >= 200 )
{
//Vector vecSrc = m_pPlayer->GetGunPosition();
// #ifndef CLIENT_DLL
Vector vecSrc = m_pPlayer->pev->origin;
// lots of smoke
MESSAGE_BEGIN( MSG_ALL, SVC_TEMPENTITY );
WRITE_BYTE( TE_SMOKE );
WRITE_COORD( vecSrc.x );
WRITE_COORD( vecSrc.y );
WRITE_COORD( vecSrc.z );
WRITE_SHORT( m_iSpriteTexture );
WRITE_BYTE( 25 ); // scale * 10
WRITE_BYTE( 10); // framerate
MESSAGE_END();
//#endif
}
[/quote]
If heat is >= 200 you return from the method. The code that handles smoke is never executed. You should merge the 2 if statements:
[quote]
if ( m_iHeat >= 200 )
{
m_flCooldownTime = gpGlobals->time + 2.0f; // Shepard : This forces the player to wait 3 seconds for the weapon to cool down
m_flNextPrimaryAttack = 3.0f;//0.15f;
//Vector vecSrc = m_pPlayer->GetGunPosition();
// #ifndef CLIENT_DLL
Vector vecSrc = m_pPlayer->pev->origin;
// lots of smoke
MESSAGE_BEGIN( MSG_ALL, SVC_TEMPENTITY );
WRITE_BYTE( TE_SMOKE );
WRITE_COORD( vecSrc.x );
WRITE_COORD( vecSrc.y );
WRITE_COORD( vecSrc.z );
WRITE_SHORT( m_iSpriteTexture );
WRITE_BYTE( 25 ); // scale * 10
WRITE_BYTE( 10); // framerate
MESSAGE_END();
//#endif
return;
}
[/quote]
This way the smoke effects are handled when your heat is >= 200.