diff --git a/src/game/shared/tf/tf_weapon_dragons_fury.cpp b/src/game/shared/tf/tf_weapon_dragons_fury.cpp index c5d5036719..f8976a3389 100644 --- a/src/game/shared/tf/tf_weapon_dragons_fury.cpp +++ b/src/game/shared/tf/tf_weapon_dragons_fury.cpp @@ -21,7 +21,7 @@ #endif extern ConVar tf_flamethrower_burstammo; - +extern ConVar tf_fireball_distance; //============================================================================= // @@ -144,24 +144,19 @@ CBaseEntity* CTFWeaponFlameBall::FireProjectile( CTFPlayer *pPlayer ) RemoveProjectileAmmo( pPlayer ); #ifdef GAME_DLL + QAngle angForward = pPlayer->EyeAngles(); + Vector vecForward, vecRight, vecUp; - AngleVectors( pPlayer->EyeAngles(), &vecForward, &vecRight, &vecUp ); + AngleVectors( angForward, &vecForward, &vecRight, &vecUp ); - float fRight = 8.f; + float fRight = 7.0f; if ( IsViewModelFlipped() ) { fRight *= -1; } - Vector vecSrc = pPlayer->Weapon_ShootPosition(); + Vector vecShootPos = pPlayer->Weapon_ShootPosition(); // Shoot from the right location - vecSrc = vecSrc + (vecUp * -9.0f) + (vecRight * 7.0f) + (vecForward * 3.0f); - - QAngle angForward = pPlayer->EyeAngles(); - - trace_t trace; - Vector vecEye = pPlayer->EyePosition(); - CTraceFilterSimple traceFilter( this, COLLISION_GROUP_NONE ); - UTIL_TraceHull( vecEye, vecSrc, -Vector(8,8,8), Vector(8,8,8), MASK_SOLID_BRUSHONLY, &traceFilter, &trace ); + Vector vecSrc = vecShootPos + ( vecUp * -9.0f ) + ( vecRight * fRight ) + ( vecForward * 3.0f ); CTFProjectile_Rocket *pRocket = static_cast( CBaseEntity::CreateNoSpawn( "tf_projectile_balloffire", vecSrc, angForward, pPlayer ) ); if ( pRocket ) @@ -171,12 +166,14 @@ CBaseEntity* CTFWeaponFlameBall::FireProjectile( CTFPlayer *pPlayer ) DoFireEffects(); pRocket->SetOwnerEntity( pPlayer ); - pRocket->SetLauncher( this ); + pRocket->SetLauncher( this ); + + float flEndDist = tf_fireball_distance.GetFloat(); - Vector vForward; - AngleVectors( angForward, &vForward, NULL, NULL ); + Vector vecProjForward = ( vecShootPos + vecForward * flEndDist ) - vecSrc; + VectorNormalize( vecProjForward ); - pRocket->SetAbsVelocity( vForward * 600 ); + pRocket->SetAbsVelocity( vecProjForward * 600 ); pRocket->SetDamage( 20 ); pRocket->ChangeTeam( pPlayer->GetTeamNumber() );