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)
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<Gas, float>();
- 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<GasCanisterComponent> canister)
+ {
+ return string.Join(", ", canister.Comp.Air);
+ }
+
private void OnCanisterUpdated(EntityUid uid, GasCanisterComponent canister, ref AtmosDeviceUpdateEvent args)
{
_atmos.React(canister.Air, canister);