/* <8df51> ../cstrike/dlls/func_tank.cpp:854 */ void CFuncTankLaser::__MAKE_VHOOK(Fire)(const Vector &barrelEnd, const Vector &forward, entvars_t *pevAttacker) { int i; TraceResult tr; if (m_fireLast != 0 && GetLaser()) { // TankTrace needs gpGlobals->v_up, etc. UTIL_MakeAimVectors(pev->angles); int bulletCount = (int)((gpGlobals->time - m_fireLast) * m_fireRate); if (bulletCount) { for (i = 0; i < bulletCount; i++) { m_pLaser->pev->origin = barrelEnd; TankTrace(barrelEnd, forward, gTankSpread[m_spread], tr); m_laserTime = gpGlobals->time; m_pLaser->TurnOn(); m_pLaser->pev->dmgtime = gpGlobals->time - 1.0; m_pLaser->FireAtPoint(tr); m_pLaser->pev->nextthink = 0; } CFuncTank::Fire(barrelEnd, forward, pev); } } else { CFuncTank::Fire(barrelEnd, forward, pev); } }
void CFuncTankMortar::Fire( int bulletCount, const Vector &barrelEnd, const Vector &vecForward, CBaseEntity *pAttacker ) { if ( m_fireEndSound != NULL_STRING ) { CPASAttenuationFilter filter( this ); EmitSound( filter, entindex(), CHAN_WEAPON, STRING(m_fireEndSound), 1.0, ATTN_NORM ); } trace_t tr; TankTrace( barrelEnd, vecForward, gTankSpread[m_spread], tr ); ExplosionCreate( tr.endpos, GetAbsAngles(), this, m_Magnitude, 0, true ); BaseClass::Fire( bulletCount, barrelEnd, vecForward, this ); }
void CFuncTankMortar::Fire(const Vector &barrelEnd, const Vector &forward, entvars_t *pevAttacker) { if (m_fireLast != 0) { int bulletCount = (int)((gpGlobals->time - m_fireLast) * m_fireRate); if (bulletCount > 0) { UTIL_MakeAimVectors(pev->angles); TraceResult tr; TankTrace(barrelEnd, forward, gTankSpread[m_spread], tr); ExplosionCreate(tr.vecEndPos, pev->angles, edict(), pev->impulse, TRUE); CFuncTank::Fire(barrelEnd, forward, pev); } } else CFuncTank::Fire(barrelEnd, forward, pev); }
void CFuncTankLaser::Fire( int bulletCount, const Vector &barrelEnd, const Vector &forward, CBaseEntity *pAttacker ) { int i; trace_t tr; if ( GetLaser() ) { for ( i = 0; i < bulletCount; i++ ) { m_pLaser->SetLocalOrigin( barrelEnd ); TankTrace( barrelEnd, forward, gTankSpread[m_spread], tr ); m_laserTime = gpGlobals->curtime; m_pLaser->TurnOn(); m_pLaser->SetFireTime( gpGlobals->curtime - 1.0 ); m_pLaser->FireAtPoint( tr ); m_pLaser->SetNextThink( TICK_NEVER_THINK ); } CFuncTank::Fire( bulletCount, barrelEnd, forward, this ); } }
void CFuncTankMortar::Fire( int bulletCount, const Vector &barrelEnd, const Vector &vecForward, CBaseEntity *pAttacker ) { if ( m_fireEndSound != NULL_STRING ) { CPASAttenuationFilter filter( this ); EmitSound_t ep; ep.m_nChannel = CHAN_WEAPON; ep.m_pSoundName = STRING(m_fireEndSound); ep.m_flVolume = 1.0f; ep.m_SoundLevel = SNDLVL_NORM; EmitSound( filter, entindex(), ep ); } trace_t tr; TankTrace( barrelEnd, vecForward, gTankSpread[m_spread], tr ); const CBaseEntity * ent = NULL; if ( g_pGameRules->IsMultiplayer() ) { // temp remove suppress host ent = te->GetSuppressHost(); te->SetSuppressHost( NULL ); } ExplosionCreate( tr.endpos, GetAbsAngles(), this, m_Magnitude, 0, true ); if ( g_pGameRules->IsMultiplayer() ) { te->SetSuppressHost( (CBaseEntity *) ent ); } BaseClass::Fire( bulletCount, barrelEnd, vecForward, this ); }
void CFuncTankMortar::__MAKE_VHOOK(Fire)(const Vector &barrelEnd, const Vector &forward, entvars_t *pevAttacker) { if (m_fireLast != 0.0f) { int bulletCount = int((gpGlobals->time - m_fireLast) * m_fireRate); // Only create 1 explosion if (bulletCount > 0) { TraceResult tr; // TankTrace needs gpGlobals->v_up, etc. UTIL_MakeAimVectors(pev->angles); TankTrace(barrelEnd, forward, gTankSpread[m_spread], tr); ExplosionCreate(tr.vecEndPos, pev->angles, edict(), pev->impulse, TRUE); CFuncTank::Fire(barrelEnd, forward, pev); } } else CFuncTank::Fire(barrelEnd, forward, pev); }