Fix hitscan lasers (#2239)
EntityCoordinates moment Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
This commit is contained in:
@@ -426,20 +426,18 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
|
||||
/// </summary>
|
||||
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<IPhysicsManager>();
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user