diff --git a/Content.IntegrationTests/AssemblyInfo.cs b/Content.IntegrationTests/AssemblyInfo.cs index 76fc42f3a9..b8a88e2623 100644 --- a/Content.IntegrationTests/AssemblyInfo.cs +++ b/Content.IntegrationTests/AssemblyInfo.cs @@ -5,4 +5,4 @@ // https://github.com/dotnet/runtime/issues/107197 // So we can't really parallelize integration tests harder either until the runtime fixes that, // *or* we fix serv3 to not spam expression trees. -[assembly: LevelOfParallelism(3)] +[assembly: LevelOfParallelism(2)] diff --git a/Content.Shared/Projectiles/ProjectileEmbedEvent.cs b/Content.Shared/Projectiles/ProjectileEmbedEvent.cs index e7dd6df8e2..675549c9d0 100644 --- a/Content.Shared/Projectiles/ProjectileEmbedEvent.cs +++ b/Content.Shared/Projectiles/ProjectileEmbedEvent.cs @@ -4,4 +4,4 @@ namespace Content.Shared.Projectiles; /// Raised directed on an entity when it embeds into something. /// [ByRefEvent] -public readonly record struct ProjectileEmbedEvent(EntityUid? Shooter, EntityUid Weapon, EntityUid Embedded); +public readonly record struct ProjectileEmbedEvent(EntityUid? Shooter, EntityUid? Weapon, EntityUid Embedded); diff --git a/Content.Shared/Projectiles/SharedProjectileSystem.cs b/Content.Shared/Projectiles/SharedProjectileSystem.cs index 20d1e051a2..a1f277c036 100644 --- a/Content.Shared/Projectiles/SharedProjectileSystem.cs +++ b/Content.Shared/Projectiles/SharedProjectileSystem.cs @@ -94,11 +94,11 @@ public abstract partial class SharedProjectileSystem : EntitySystem EmbedAttach(embeddable, args.Target, args.Shooter, embeddable.Comp); // Raise a specific event for projectiles. - if (TryComp(embeddable, out ProjectileComponent? projectile)) - { - var ev = new ProjectileEmbedEvent(projectile.Shooter!.Value, projectile.Weapon!.Value, args.Target); - RaiseLocalEvent(embeddable, ref ev); - } + if (!TryComp(embeddable, out var projectile)) + return; + + var ev = new ProjectileEmbedEvent(projectile.Shooter, projectile.Weapon, args.Target); + RaiseLocalEvent(embeddable, ref ev); } private void EmbedAttach(EntityUid uid, EntityUid target, EntityUid? user, EmbeddableProjectileComponent component) diff --git a/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs b/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs index d27efa4d76..c3c1509c7f 100644 --- a/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs +++ b/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs @@ -205,11 +205,11 @@ public abstract class SharedGrapplingGunSystem : EntitySystem private void OnGrappleCollide(EntityUid uid, GrapplingProjectileComponent component, ref ProjectileEmbedEvent args) { - if (!Timing.IsFirstTimePredicted) + if (!Timing.IsFirstTimePredicted || !args.Weapon.HasValue) return; var jointComp = EnsureComp(uid); - var joint = _joints.CreateDistanceJoint(uid, args.Weapon, anchorA: new Vector2(0f, 0.5f), id: GrapplingJoint); + var joint = _joints.CreateDistanceJoint(uid, args.Weapon.Value, anchorA: new Vector2(0f, 0.5f), id: GrapplingJoint); joint.MaxLength = joint.Length + 0.2f; joint.Stiffness = 1f; joint.MinLength = 0.35f;