diff --git a/Content.Server/RatKing/RatKingComponent.cs b/Content.Server/RatKing/RatKingComponent.cs index f10945c7a1..4bdfcf216f 100644 --- a/Content.Server/RatKing/RatKingComponent.cs +++ b/Content.Server/RatKing/RatKingComponent.cs @@ -42,6 +42,6 @@ namespace Content.Server.RatKing /// How many moles of Miasma are released after one us of Domain /// [ViewVariables, DataField("molesMiasmaPerDomain")] - public float MolesMiasmaPerDomain = 75f; + public float MolesMiasmaPerDomain = 100f; } }; diff --git a/Content.Shared/Pulling/Components/SharedPullerComponent.cs b/Content.Shared/Pulling/Components/SharedPullerComponent.cs index ec0a5260ca..f79c6a4f1e 100644 --- a/Content.Shared/Pulling/Components/SharedPullerComponent.cs +++ b/Content.Shared/Pulling/Components/SharedPullerComponent.cs @@ -12,6 +12,12 @@ [ViewVariables] public EntityUid? Pulling { get; set; } + /// + /// Does this entity need hands to be able to pull something? + /// + [DataField("needsHands")] + public bool NeedsHands = true; + protected override void Shutdown() { EntitySystem.Get().ForceDisconnectPuller(this); diff --git a/Content.Shared/Pulling/Systems/SharedPullingSystem.Actions.cs b/Content.Shared/Pulling/Systems/SharedPullingSystem.Actions.cs index 723b10a2a9..c0c9f07f4c 100644 --- a/Content.Shared/Pulling/Systems/SharedPullingSystem.Actions.cs +++ b/Content.Shared/Pulling/Systems/SharedPullingSystem.Actions.cs @@ -1,5 +1,6 @@ using Content.Shared.ActionBlocker; using Content.Shared.Buckle.Components; +using Content.Shared.Hands.EntitySystems; using Content.Shared.Physics.Pull; using Content.Shared.Pulling.Components; using Content.Shared.Pulling.Events; @@ -13,10 +14,16 @@ namespace Content.Shared.Pulling { [Dependency] private readonly ActionBlockerSystem _blocker = default!; [Dependency] private readonly SharedContainerSystem _containerSystem = default!; + [Dependency] private readonly SharedHandsSystem _handsSystem = default!; public bool CanPull(EntityUid puller, EntityUid pulled) { - if (!EntityManager.HasComponent(puller)) + if (!EntityManager.TryGetComponent(puller, out var comp)) + { + return false; + } + + if (comp.NeedsHands && !_handsSystem.TryGetEmptyHand(puller, out _)) { return false; } diff --git a/Content.Shared/Pulling/Systems/SharedPullingSystem.cs b/Content.Shared/Pulling/Systems/SharedPullingSystem.cs index 9783c0133c..6f372bec82 100644 --- a/Content.Shared/Pulling/Systems/SharedPullingSystem.cs +++ b/Content.Shared/Pulling/Systems/SharedPullingSystem.cs @@ -54,7 +54,7 @@ namespace Content.Shared.Pulling private void AddPullVerbs(EntityUid uid, SharedPullableComponent component, GetVerbsEvent args) { - if (args.Hands == null || !args.CanAccess || !args.CanInteract) + if (!args.CanAccess || !args.CanInteract) return; // Are they trying to pull themselves up by their bootstraps? diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml index 990731960e..74d51d3bec 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml @@ -64,6 +64,7 @@ Dead: Base: dead - type: Puller + needsHands: false - type: GhostTakeoverAvailable makeSentient: true name: Rat King @@ -180,6 +181,7 @@ Dead: Base: splat-3 - type: Puller + needsHands: false - type: DiseaseCarrier carrierDiseases: - VentCough