diff --git a/Content.Shared/Explosion/Components/ScatteringGrenadeComponent.cs b/Content.Shared/Explosion/Components/ScatteringGrenadeComponent.cs
index be27c49ffa..059ad189d1 100644
--- a/Content.Shared/Explosion/Components/ScatteringGrenadeComponent.cs
+++ b/Content.Shared/Explosion/Components/ScatteringGrenadeComponent.cs
@@ -27,7 +27,7 @@ public sealed partial class ScatteringGrenadeComponent : Component
///
/// If we have a pre-fill how many more can we spawn.
///
- [AutoNetworkedField]
+ [ViewVariables(VVAccess.ReadOnly), AutoNetworkedField]
public int UnspawnedCount;
///
@@ -36,6 +36,12 @@ public sealed partial class ScatteringGrenadeComponent : Component
[DataField]
public int Capacity = 3;
+ ///
+ /// Number of grenades currently contained in the cluster (both spawned and unspawned)
+ ///
+ [ViewVariables(VVAccess.ReadOnly)]
+ public int Count => UnspawnedCount + Container.ContainedEntities.Count;
+
///
/// Decides if contained entities trigger after getting launched
///
diff --git a/Content.Shared/Explosion/EntitySystems/SharedScatteringGrenadeSystem.cs b/Content.Shared/Explosion/EntitySystems/SharedScatteringGrenadeSystem.cs
index b704fbf86f..7b54b0f7d5 100644
--- a/Content.Shared/Explosion/EntitySystems/SharedScatteringGrenadeSystem.cs
+++ b/Content.Shared/Explosion/EntitySystems/SharedScatteringGrenadeSystem.cs
@@ -49,6 +49,10 @@ public abstract class SharedScatteringGrenadeSystem : EntitySystem
if (entity.Comp.Whitelist == null)
return;
+ // Make sure there's room for another grenade to be added
+ if (entity.Comp.Count >= entity.Comp.Capacity)
+ return;
+
if (args.Handled || !_whitelistSystem.IsValid(entity.Comp.Whitelist, args.Used))
return;
@@ -65,6 +69,6 @@ public abstract class SharedScatteringGrenadeSystem : EntitySystem
if (!TryComp(entity, out var appearanceComponent))
return;
- _appearance.SetData(entity, ClusterGrenadeVisuals.GrenadesCounter, entity.Comp.UnspawnedCount + entity.Comp.Container.ContainedEntities.Count, appearanceComponent);
+ _appearance.SetData(entity, ClusterGrenadeVisuals.GrenadesCounter, entity.Comp.Count, appearanceComponent);
}
}