Limit maximum capacity of fillable cluster grenades (#34281)

* Limit maximum capacity of fillable cluster grenades

* Swap GrenadeCount method for component property
This commit is contained in:
Tayrtahn
2025-02-11 18:13:00 -05:00
committed by GitHub
parent a849d2c989
commit 4603b47778
2 changed files with 12 additions and 2 deletions

View File

@@ -27,7 +27,7 @@ public sealed partial class ScatteringGrenadeComponent : Component
/// <summary>
/// If we have a pre-fill how many more can we spawn.
/// </summary>
[AutoNetworkedField]
[ViewVariables(VVAccess.ReadOnly), AutoNetworkedField]
public int UnspawnedCount;
/// <summary>
@@ -36,6 +36,12 @@ public sealed partial class ScatteringGrenadeComponent : Component
[DataField]
public int Capacity = 3;
/// <summary>
/// Number of grenades currently contained in the cluster (both spawned and unspawned)
/// </summary>
[ViewVariables(VVAccess.ReadOnly)]
public int Count => UnspawnedCount + Container.ContainedEntities.Count;
/// <summary>
/// Decides if contained entities trigger after getting launched
/// </summary>

View File

@@ -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<AppearanceComponent>(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);
}
}