diff --git a/Content.Shared/Random/RulesPrototype.cs b/Content.Shared/Random/RulesPrototype.cs
index cfa78ecdb5..0541d503d8 100644
--- a/Content.Shared/Random/RulesPrototype.cs
+++ b/Content.Shared/Random/RulesPrototype.cs
@@ -58,7 +58,7 @@ public sealed class NearbyTilesPercentRule : RulesRule
///
/// If there are anchored entities on the tile do we ignore the tile.
///
- [DataField("anchored")] public bool Anchored;
+ [DataField("ignoreAnchored")] public bool IgnoreAnchored;
[DataField("percent", required: true)]
public float Percent;
diff --git a/Content.Shared/Random/RulesSystem.cs b/Content.Shared/Random/RulesSystem.cs
index 768aedf326..d4f2c6e9d1 100644
--- a/Content.Shared/Random/RulesSystem.cs
+++ b/Content.Shared/Random/RulesSystem.cs
@@ -2,6 +2,7 @@ using Content.Shared.Access.Components;
using Content.Shared.Access.Systems;
using Robust.Shared.Map;
using Robust.Shared.Map.Components;
+using Robust.Shared.Physics.Components;
namespace Content.Shared.Random;
@@ -72,8 +73,10 @@ public sealed class RulesSystem : EntitySystem
foreach (var comp in _lookup.GetComponentsInRange(xform.MapID,
worldPos, access.Range))
{
- if (access.Anchored && !xformQuery.GetComponent(comp.Owner).Anchored ||
- !_reader.AreAccessTagsAllowed(access.Access, comp))
+ if (!_reader.AreAccessTagsAllowed(access.Access, comp) ||
+ access.Anchored &&
+ (!xformQuery.TryGetComponent(comp.Owner, out var compXform) ||
+ !compXform.Anchored))
{
continue;
}
@@ -113,7 +116,8 @@ public sealed class RulesSystem : EntitySystem
worldPos, nearbyComps.Range))
{
if (nearbyComps.Anchored &&
- (!xformQuery.TryGetComponent(comp.Owner, out var compXform) || !compXform.Anchored))
+ (!xformQuery.TryGetComponent(comp.Owner, out var compXform) ||
+ !compXform.Anchored))
{
continue;
}
@@ -186,7 +190,7 @@ public sealed class RulesSystem : EntitySystem
if (!tiles.Tiles.Contains(_tileDef[tile.Tile.TypeId].ID))
continue;
- if (tiles.Anchored && grid.GetAnchoredEntitiesEnumerator(tile.GridIndices).MoveNext(out _))
+ if (tiles.IgnoreAnchored && grid.GetAnchoredEntitiesEnumerator(tile.GridIndices).MoveNext(out _))
continue;
matchingTileCount++;
diff --git a/Resources/Prototypes/audio.yml b/Resources/Prototypes/audio.yml
index 93f3a5f3da..ecbb5884d1 100644
--- a/Resources/Prototypes/audio.yml
+++ b/Resources/Prototypes/audio.yml
@@ -225,7 +225,7 @@
id: NearMaintenance
rules:
- !type:NearbyTilesPercentRule
- anchored: false
+ ignoreAnchored: true
percent: 0.25
tiles:
- Plating
@@ -235,10 +235,11 @@
id: NearMedical
rules:
- !type:NearbyTilesPercentRule
+ ignoreAnchored: true
percent: 0.5
tiles:
- FloorWhite
- range: 5
+ range: 3
- type: rules
id: NearPrayable
@@ -253,6 +254,7 @@
id: NearMorgue
rules:
- !type:NearbyComponentsRule
+ anchored: true
count: 2
components:
- type: Morgue