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;