diff --git a/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerRangedBarrelComponent.cs b/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerRangedBarrelComponent.cs index cd7ab1dd85..da4c73e810 100644 --- a/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerRangedBarrelComponent.cs +++ b/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerRangedBarrelComponent.cs @@ -426,20 +426,18 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels /// private void FireHitscan(IEntity shooter, HitscanComponent hitscan, Angle angle) { - var ray = new CollisionRay(Owner.Transform.Coordinates.Position, angle.ToVec(), (int) hitscan.CollisionMask); + var ray = new CollisionRay(Owner.Transform.Coordinates.ToMapPos(Owner.EntityManager), angle.ToVec(), (int) hitscan.CollisionMask); var physicsManager = IoCManager.Resolve(); var rayCastResults = physicsManager.IntersectRay(Owner.Transform.MapID, ray, hitscan.MaxLength, shooter, false).ToList(); if (rayCastResults.Count >= 1) { var result = rayCastResults[0]; - var distance = result.HitEntity != null ? result.Distance : hitscan.MaxLength; + var distance = result.Distance; hitscan.FireEffects(shooter, distance, angle, result.HitEntity); - if (result.HitEntity == null || !result.HitEntity.TryGetComponent(out IDamageableComponent damageable)) - { + if (!result.HitEntity.TryGetComponent(out IDamageableComponent damageable)) return; - } damageable.ChangeDamage(hitscan.DamageType, (int)Math.Round(hitscan.Damage, MidpointRounding.AwayFromZero), false, Owner); //I used Math.Round over Convert.toInt32, as toInt32 always rounds to