diff --git a/Content.Server/Salvage/SalvageMagnetComponent.cs b/Content.Server/Salvage/SalvageMagnetComponent.cs index 8de904d6ec..4773cc22b2 100644 --- a/Content.Server/Salvage/SalvageMagnetComponent.cs +++ b/Content.Server/Salvage/SalvageMagnetComponent.cs @@ -1,3 +1,7 @@ +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Content.Shared.Radio; + namespace Content.Server.Salvage { /// @@ -28,6 +32,11 @@ namespace Content.Server.Salvage [ViewVariables(VVAccess.ReadOnly)] [DataField("magnetState")] public MagnetState MagnetState = MagnetState.Inactive; + + [ViewVariables] + [DataField("salvageChannel", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string SalvageChannel = "Supply"; + } public record struct MagnetState(MagnetStateType StateType, TimeSpan Until) { diff --git a/Content.Server/Salvage/SalvageSystem.cs b/Content.Server/Salvage/SalvageSystem.cs index c769001c5d..de82e89088 100644 --- a/Content.Server/Salvage/SalvageSystem.cs +++ b/Content.Server/Salvage/SalvageSystem.cs @@ -69,7 +69,7 @@ namespace Content.Server.Salvage { var gridUid = _mapManager.GetGridEuid(ev.GridId); if (EntityManager.TryGetComponent(gridUid, out var salvComp) && salvComp.SpawnerMagnet != null) - Report(salvComp.SpawnerMagnet.Owner, "salvage-system-announcement-spawn-magnet-lost"); + Report(salvComp.SpawnerMagnet.Owner, salvComp.SpawnerMagnet.SalvageChannel, "salvage-system-announcement-spawn-magnet-lost"); // For the very unlikely possibility that the salvage magnet was on a salvage, we will not return here } foreach(var gridState in _salvageGridStates) @@ -96,16 +96,16 @@ namespace Content.Server.Salvage return; } salvageGridState.ActiveMagnets.Remove(component); - Report(uid, "salvage-system-announcement-spawn-magnet-lost"); + Report(uid, component.SalvageChannel, "salvage-system-announcement-spawn-magnet-lost"); if (component.AttachedEntity.HasValue) { SafeDeleteSalvage(component.AttachedEntity.Value); component.AttachedEntity = null; - Report(uid, "salvage-system-announcement-lost"); + Report(uid, component.SalvageChannel, "salvage-system-announcement-lost"); } else if (component.MagnetState is { StateType: MagnetStateType.Attaching }) { - Report(uid, "salvage-system-announcement-spawn-no-debris-available"); + Report(uid, component.SalvageChannel, "salvage-system-announcement-spawn-no-debris-available"); } component.MagnetState = MagnetState.Inactive; } @@ -168,7 +168,7 @@ namespace Content.Server.Salvage } gridState.ActiveMagnets.Add(component); component.MagnetState = new MagnetState(MagnetStateType.Attaching, gridState.CurrentTime + AttachingTime); - Report(component.Owner, "salvage-system-report-activate-success"); + Report(component.Owner, component.SalvageChannel, "salvage-system-report-activate-success"); break; case MagnetStateType.Attaching: case MagnetStateType.Holding: @@ -279,7 +279,7 @@ namespace Content.Server.Salvage if (map == null) { - Report(component.Owner, "salvage-system-announcement-spawn-no-debris-available"); + Report(component.Owner, component.SalvageChannel, "salvage-system-announcement-spawn-no-debris-available"); return false; } @@ -291,7 +291,7 @@ namespace Content.Server.Salvage var (_, salvageEntityId) = _mapLoader.LoadBlueprint(spl.MapId, map.MapPath.ToString(), opts); if (salvageEntityId == null) { - Report(component.Owner, "salvage-system-announcement-spawn-debris-disintegrated"); + Report(component.Owner, component.SalvageChannel, "salvage-system-announcement-spawn-debris-disintegrated"); return false; } component.AttachedEntity = salvageEntityId; @@ -301,16 +301,16 @@ namespace Content.Server.Salvage var pulledTransform = EntityManager.GetComponent(salvageEntityId.Value); pulledTransform.WorldRotation = spAngle; - Report(component.Owner, "salvage-system-announcement-arrived", ("timeLeft", HoldTime.TotalSeconds)); + Report(component.Owner, component.SalvageChannel, "salvage-system-announcement-arrived", ("timeLeft", HoldTime.TotalSeconds)); return true; } - private void Report(EntityUid source, string messageKey, params (string, object)[] args) + private void Report(EntityUid source, string channelName, string messageKey, params (string, object)[] args) { if (!TryComp(source, out var radio)) return; var message = args.Length == 0 ? Loc.GetString(messageKey) : Loc.GetString(messageKey, args); - var channel = _prototypeManager.Index("Supply"); + var channel = _prototypeManager.Index(channelName); _radioSystem.SpreadMessage(radio, source, message, channel); } @@ -329,7 +329,7 @@ namespace Content.Server.Salvage } break; case MagnetStateType.Holding: - Report(magnet.Owner, "salvage-system-announcement-losing", ("timeLeft", DetachingTime.TotalSeconds)); + Report(magnet.Owner, magnet.SalvageChannel, "salvage-system-announcement-losing", ("timeLeft", DetachingTime.TotalSeconds)); magnet.MagnetState = new MagnetState(MagnetStateType.Detaching, currentTime + DetachingTime); break; case MagnetStateType.Detaching: @@ -341,7 +341,7 @@ namespace Content.Server.Salvage { Logger.ErrorS("salvage", "Salvage detaching was expecting attached entity but it was null"); } - Report(magnet.Owner, "salvage-system-announcement-lost"); + Report(magnet.Owner, magnet.SalvageChannel, "salvage-system-announcement-lost"); magnet.MagnetState = new MagnetState(MagnetStateType.CoolingDown, currentTime + CooldownTime); break; case MagnetStateType.CoolingDown: