From: PJB3005 Date: Fri, 17 Jan 2025 23:51:32 +0000 (+0100) Subject: Improve canister admin logs. X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=f63eb691f0bf961ffd3d3256b76e3ef17ad0ee03;p=space-station-14.git Improve canister admin logs. 1. Now clearly says "opened"/"closed" when changing the release valve. 2. Clearly says whether the valve was opened while a canister was inserted or not. 3. When a tank is ejected, logs if the valve is open and the ejection started spilling into the environment. Fixes #34488 --- diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs index 584928def7..292b6d94f8 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs @@ -109,7 +109,15 @@ public sealed class GasCanisterSystem : EntitySystem var item = canister.GasTankSlot.Item; _slots.TryEjectToHands(uid, canister.GasTankSlot, args.Actor); - _adminLogger.Add(LogType.CanisterTankEjected, LogImpact.Medium, $"Player {ToPrettyString(args.Actor):player} ejected tank {ToPrettyString(item):tank} from {ToPrettyString(uid):canister}"); + + if (canister.ReleaseValve) + { + _adminLogger.Add(LogType.CanisterTankEjected, LogImpact.High, $"Player {ToPrettyString(args.Actor):player} ejected tank {ToPrettyString(item):tank} from {ToPrettyString(uid):canister} while the valve was open, releasing [{GetContainedGasesString((uid, canister))}] to atmosphere"); + } + else + { + _adminLogger.Add(LogType.CanisterTankEjected, LogImpact.Medium, $"Player {ToPrettyString(args.Actor):player} ejected tank {ToPrettyString(item):tank} from {ToPrettyString(uid):canister}"); + } } private void OnCanisterChangeReleasePressure(EntityUid uid, GasCanisterComponent canister, GasCanisterChangeReleasePressureMessage args) @@ -124,24 +132,24 @@ public sealed class GasCanisterSystem : EntitySystem private void OnCanisterChangeReleaseValve(EntityUid uid, GasCanisterComponent canister, GasCanisterChangeReleaseValveMessage args) { - var impact = LogImpact.High; // filling a jetpack with plasma is less important than filling a room with it - impact = canister.GasTankSlot.HasItem ? LogImpact.Medium : LogImpact.High; + var hasItem = canister.GasTankSlot.HasItem; + var impact = hasItem ? LogImpact.Medium : LogImpact.High; - var containedGasDict = new Dictionary(); - var containedGasArray = Enum.GetValues(typeof(Gas)); - - for (int i = 0; i < containedGasArray.Length; i++) - { - containedGasDict.Add((Gas)i, canister.Air[i]); - } - - _adminLogger.Add(LogType.CanisterValve, impact, $"{ToPrettyString(args.Actor):player} set the valve on {ToPrettyString(uid):canister} to {args.Valve:valveState} while it contained [{string.Join(", ", containedGasDict)}]"); + _adminLogger.Add( + LogType.CanisterValve, + impact, + $"{ToPrettyString(args.Actor):player} {(args.Valve ? "opened" : "closed")} the valve on {ToPrettyString(uid):canister} to {(hasItem ? "inserted tank" : "environment")} while it contained [{GetContainedGasesString((uid, canister))}]"); canister.ReleaseValve = args.Valve; DirtyUI(uid, canister); } + private static string GetContainedGasesString(Entity canister) + { + return string.Join(", ", canister.Comp.Air); + } + private void OnCanisterUpdated(EntityUid uid, GasCanisterComponent canister, ref AtmosDeviceUpdateEvent args) { _atmos.React(canister.Air, canister);