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