diff --git a/Content.Server/StationEvents/Events/GreytideVirusRule.cs b/Content.Server/StationEvents/Events/GreytideVirusRule.cs index f60d80ba9c..19d4438347 100644 --- a/Content.Server/StationEvents/Events/GreytideVirusRule.cs +++ b/Content.Server/StationEvents/Events/GreytideVirusRule.cs @@ -6,6 +6,7 @@ using Content.Shared.Doors.Components; using Content.Shared.Doors.Systems; using Content.Shared.Lock; using Content.Shared.GameTicking.Components; +using Content.Shared.Station.Components; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -43,6 +44,9 @@ public sealed class GreytideVirusRule : StationEventSystem(); var accessQuery = GetEntityQuery(); - var lockQuery = AllEntityQuery(); - while (lockQuery.MoveNext(out var lockUid, out var lockComp)) + var lockQuery = AllEntityQuery(); + while (lockQuery.MoveNext(out var lockUid, out var lockComp, out var xform)) { if (!accessQuery.TryComp(lockUid, out var accessComp)) continue; + // make sure not to hit CentCom or other maps + if (CompOrNull(xform.GridUid)?.Station != chosenStation) + continue; + // check access // the AreAccessTagsAllowed function is a little weird because it technically has support for certain tags to be locked out of opening something // which might have unintened side effects (see the comments in the function itself) @@ -74,13 +82,17 @@ public sealed class GreytideVirusRule : StationEventSystem(); - while (airlockQuery.MoveNext(out var airlockUid, out var airlockComp, out var doorComp)) + var airlockQuery = AllEntityQuery(); + while (airlockQuery.MoveNext(out var airlockUid, out var airlockComp, out var doorComp, out var xform)) { // don't space everything if (firelockQuery.HasComp(airlockUid)) continue; + // make sure not to hit CentCom or other maps + if (CompOrNull(xform.GridUid)?.Station != chosenStation) + continue; + // use the access reader from the door electronics if they exist if (!_access.GetMainAccessReader(airlockUid, out var accessComp)) continue;