private void SpawnProjectileInternal(Bullet bullet, bool allowSplash, bool preventProjectileView) { if (allowSplash && bullet.ProjectileType.SplashRadius > 0) { bullet.AddSplash(bullet.ProjectileType); } if (bullet.ProjectileType.IsBeam) { if (this.ImpactBeamTargets(bullet)) { int maxSpeed = bullet.ProjectileType.MaxSpeed; if (maxSpeed > 0) { uint num = (uint)(1000 / maxSpeed); if (num != 0u) { Service.Get <SimTimerManager>().CreateSimTimer(num, true, new TimerDelegate(this.OnBeamProjectileImpact), bullet); } } } } else { Service.Get <SimTimerManager>().CreateSimTimer(bullet.TravelTime, false, new TimerDelegate(this.OnProjectileImpact), bullet); } if (!preventProjectileView) { Service.Get <ProjectileViewManager>().SpawnProjectile(bullet); } }