diff --git a/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs b/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs index 85ba99ec9a..8f15dc90e5 100644 --- a/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs +++ b/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs @@ -266,7 +266,7 @@ public sealed class AirAlarmSystem : EntitySystem var addr = string.Empty; if (EntityManager.TryGetComponent(uid, out DeviceNetworkComponent? netConn)) addr = netConn.Address; if (AccessCheck(uid, args.Session.AttachedEntity, component)) - SetMode(uid, addr, args.Mode, true, false); + SetMode(uid, addr, args.Mode, false); else UpdateUI(uid, component); } @@ -317,11 +317,11 @@ public sealed class AirAlarmSystem : EntitySystem if (args.AlarmType == AtmosAlarmType.Danger) { - SetMode(uid, addr, AirAlarmMode.WideFiltering, true, false); + SetMode(uid, addr, AirAlarmMode.WideFiltering, false); } else if (args.AlarmType == AtmosAlarmType.Normal || args.AlarmType == AtmosAlarmType.Warning) { - SetMode(uid, addr, AirAlarmMode.Filtering, true, false); + SetMode(uid, addr, AirAlarmMode.Filtering, false); } UpdateUI(uid, component); @@ -336,11 +336,14 @@ public sealed class AirAlarmSystem : EntitySystem /// /// The origin address of this mode set. Used for network sync. /// The mode to set the alarm to. - /// Whether to sync this mode change to the network or not. Defaults to false. /// Whether this change is for the UI only, or if it changes the air alarm's operating mode. Defaults to true. - public void SetMode(EntityUid uid, string origin, AirAlarmMode mode, bool sync = false, bool uiOnly = true, AirAlarmComponent? controller = null) + public void SetMode(EntityUid uid, string origin, AirAlarmMode mode, bool uiOnly = true, AirAlarmComponent? controller = null) { - if (!Resolve(uid, ref controller)) return; + if (!Resolve(uid, ref controller) || controller.CurrentMode == mode) + { + return; + } + controller.CurrentMode = mode; // setting it to UI only means we don't have @@ -377,7 +380,7 @@ public sealed class AirAlarmSystem : EntitySystem // setting sync deals with the issue of air alarms // in the same network needing to have the same mode // as other alarms - if (sync) SyncMode(uid, mode); + SyncMode(uid, mode); } /// @@ -432,7 +435,8 @@ public sealed class AirAlarmSystem : EntitySystem return; case AirAlarmSetMode: - if (!args.Data.TryGetValue(AirAlarmSetMode, out AirAlarmMode alarmMode)) break; + if (!args.Data.TryGetValue(AirAlarmSetMode, out AirAlarmMode alarmMode)) + break; SetMode(uid, args.SenderAddress, alarmMode, uiOnly: false); diff --git a/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs b/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs index 6a5a5a4e38..4021e81978 100644 --- a/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs +++ b/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs @@ -44,7 +44,7 @@ public sealed class AirAlarmPanicWire : BaseWireAction { if (EntityManager.TryGetComponent(wire.Owner, out var devNet)) { - _airAlarmSystem.SetMode(wire.Owner, devNet.Address, AirAlarmMode.Panic, true, false); + _airAlarmSystem.SetMode(wire.Owner, devNet.Address, AirAlarmMode.Panic, false); } return true; @@ -56,7 +56,7 @@ public sealed class AirAlarmPanicWire : BaseWireAction && EntityManager.TryGetComponent(wire.Owner, out var alarm) && alarm.CurrentMode == AirAlarmMode.Panic) { - _airAlarmSystem.SetMode(wire.Owner, devNet.Address, AirAlarmMode.Filtering, true, false, alarm); + _airAlarmSystem.SetMode(wire.Owner, devNet.Address, AirAlarmMode.Filtering, false, alarm); } @@ -67,7 +67,7 @@ public sealed class AirAlarmPanicWire : BaseWireAction { if (EntityManager.TryGetComponent(wire.Owner, out var devNet)) { - _airAlarmSystem.SetMode(wire.Owner, devNet.Address, AirAlarmMode.Panic, true, false); + _airAlarmSystem.SetMode(wire.Owner, devNet.Address, AirAlarmMode.Panic, false); } return true;