From 2700c7c953027ca026fcdb88a7ba9b2e8d5a79d2 Mon Sep 17 00:00:00 2001 From: Huaqas Date: Fri, 7 Aug 2026 21:20:27 +0800 Subject: [PATCH 01/14] Fix Radio Host Loadout --- Resources/Prototypes/_Goobstation/Loadouts/loadout_groups.yml | 2 +- Resources/Prototypes/_Goobstation/Roles/Jobs/Crew/radiohost.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/_Goobstation/Loadouts/loadout_groups.yml b/Resources/Prototypes/_Goobstation/Loadouts/loadout_groups.yml index feee7185fcfd..a9e5b72d1b69 100644 --- a/Resources/Prototypes/_Goobstation/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/_Goobstation/Loadouts/loadout_groups.yml @@ -1,7 +1,7 @@ - type: loadoutGroup id: RadioHostJumpsuit name: loadout-group-radiohost-jumpsuit - minLimit: 0 + minLimit: 1 loadouts: - JumpsuitHawaiBlack - JumpsuitHawaiBlue diff --git a/Resources/Prototypes/_Goobstation/Roles/Jobs/Crew/radiohost.yml b/Resources/Prototypes/_Goobstation/Roles/Jobs/Crew/radiohost.yml index a143352d4099..d604fa04feb6 100644 --- a/Resources/Prototypes/_Goobstation/Roles/Jobs/Crew/radiohost.yml +++ b/Resources/Prototypes/_Goobstation/Roles/Jobs/Crew/radiohost.yml @@ -13,6 +13,7 @@ - type: startingGear id: RadioHostGear equipment: + id: RadioHostPDA ears: ClothingHeadsetAltRadioHost belt: ClothingBeltStorageWaistbag From e7329bafe8fd8a817ea740d780a0e5b758ed3c2a Mon Sep 17 00:00:00 2001 From: Huaqas Date: Fri, 7 Aug 2026 21:47:23 +0800 Subject: [PATCH 02/14] Fix Radio Chat Message Range Turns out I got baited following the rabbit in the previous PR. Don't need a bunch of this junk since I already have the LowVolume variable. I can just base everything off of that. --- .../Radio/EntitySystems/RadioDeviceSystem.cs | 15 ++++++++++++--- .../Radio/Components/RadioSpeakerComponent.cs | 16 ---------------- .../Machines/StationRadio/radio_recievers.yml | 2 -- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs index 606fad285ae6..375ec2986869 100644 --- a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs @@ -3,6 +3,7 @@ using Content.Server.Interaction; using Content.Server.Popups; using Content.Server.Power.EntitySystems; +using Content.Shared._Goobstation.StationRadio.Components; using Content.Shared.Chat; using Content.Shared.Examine; using Content.Shared.Interaction; @@ -14,6 +15,7 @@ using Content.Shared.Speech.Components; using Robust.Shared.Prototypes; using Content.Shared.Power.EntitySystems; // Goobstation - Radio Host +using Content.Shared._Goobstation.StationRadio.Components; // Goobstation - Radio Host #region Starlight using Content.Server._Starlight.Language; @@ -195,7 +197,7 @@ private void OnAttemptListen(EntityUid uid, RadioMicrophoneComponent component, private void OnReceiveRadio(EntityUid uid, RadioSpeakerComponent component, ref RadioReceiveEvent args) { - if (uid == args.RadioSource || component.PowerRequired && !_power.IsPowered(uid)) // Goobstation - Radio Host - Powered required + if (uid == args.RadioSource || !_power.IsPowered(uid)) // Goobstation - Radio Host return; var nameEv = new TransformSpeakerNameEvent(args.MessageSource, Name(args.MessageSource)); @@ -205,10 +207,17 @@ private void OnReceiveRadio(EntityUid uid, RadioSpeakerComponent component, ref ("speaker", Name(uid)), ("originalName", nameEv.VoiceName)); + // Starlight - Start - Radio Host + var chatType = TryComp(uid, out var receiverComp) && receiverComp.LowVolume + ? InGameICChatType.Whisper + : InGameICChatType.Speak; + // Starlight - End + // log to chat so people can identity the speaker/source, but avoid clogging ghost chat if there are many radios var message = args.OriginalChatMsg.Message; // Starlight-edit: The chat system will handle the rest and re-obfuscate if needed. - _chat.TrySendInGameICMessage(uid, message, InGameICChatType.Whisper, ChatTransmitRange.GhostRangeLimit, nameOverride: name, - checkRadioPrefix: component.ParseRadioPrefix, // Starlight - Radio Host, change LouderSpeech to ParseRadioPrefix + _chat.TrySendInGameICMessage(uid, message, + chatType, // Starlight - Radio Host (ChatTransmitRange.GhostRangeLimit -> chatType) + ChatTransmitRange.GhostRangeLimit, nameOverride: name, checkRadioPrefix: false, languageOverride: args.Language); // Starlight } diff --git a/Content.Shared/Radio/Components/RadioSpeakerComponent.cs b/Content.Shared/Radio/Components/RadioSpeakerComponent.cs index ef93d2c98bc8..c9e5d87a6a91 100644 --- a/Content.Shared/Radio/Components/RadioSpeakerComponent.cs +++ b/Content.Shared/Radio/Components/RadioSpeakerComponent.cs @@ -25,20 +25,4 @@ public sealed partial class RadioSpeakerComponent : Component [DataField, AutoNetworkedField] public bool Enabled; - - // Starlight - Radio Host LouderSpeech -> ParseRadioPrefix. - /// - /// Whether or not a message is parsed through the radio when when sent in local chat. - /// - [DataField, AutoNetworkedField] - public bool ParseRadioPrefix; - // Starlight - End - - // Goobstation - Radio Host - /// - /// Does the radio need to be on a power grid to work? - /// - [DataField] - public bool PowerRequired; - // Goobstation - End } diff --git a/Resources/Prototypes/_Goobstation/Entities/Structures/Machines/StationRadio/radio_recievers.yml b/Resources/Prototypes/_Goobstation/Entities/Structures/Machines/StationRadio/radio_recievers.yml index fa8d8d511c57..5d8f90e4dbfb 100644 --- a/Resources/Prototypes/_Goobstation/Entities/Structures/Machines/StationRadio/radio_recievers.yml +++ b/Resources/Prototypes/_Goobstation/Entities/Structures/Machines/StationRadio/radio_recievers.yml @@ -46,8 +46,6 @@ - type: Machine board: StationRadioCircuitboard - type: RadioSpeaker - powerRequired: true - parseRadioPrefix: false enabled: true channels: - RadioShow From 590213d092950aba87ca446f25d6096ad92fafe3 Mon Sep 17 00:00:00 2001 From: Huaqas Date: Fri, 7 Aug 2026 22:08:50 +0800 Subject: [PATCH 03/14] Examine functionality to Vinyl Player and Radio Now when you examine the Vinyl Player, it will tell you what is inside if there is anything inside. If you examine the radio, it will tell you if it is at full or low volume. --- .../Systems/StationRadioReceiverSystem.cs | 13 +++++++++- .../StationRadio/Systems/VinylPlayerSystem.cs | 24 +++++++++++++++++-- .../_Goobstation/machines/stationradio.ftl | 6 +++++ 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs b/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs index 847a023d1e5b..1f206ff05b08 100644 --- a/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs +++ b/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs @@ -5,7 +5,7 @@ using Content.Shared.Power.EntitySystems; using Robust.Shared.Audio.Systems; using Content.Shared.DeviceLinking; // Starlight - Remove Server Check from VinylSummonSystem -using Content.Shared.Radio.Components; // Starlight - Alt click to lower volume. +using Content.Shared.Examine; // Starlight - Shift Click to view what volume the radio is at. using Content.Shared.Verbs; // Starlight - Alt click to lower volume. using Robust.Shared.Network; // Starlight - Add Station Radio Resume Play using Robust.Shared.Timing; // Starlight - Add Station Radio Resume Play @@ -35,6 +35,7 @@ public override void Initialize() SubscribeLocalEvent(OnRigTerminating); // Starlight - When Rig is destroyed, it should stop broadcasting. SubscribeLocalEvent>(OnGetAltVerbs); // Starlight - Alt click to lower volume. + SubscribeLocalEvent(OnExamined); // Starlight - Shift Click to view what volume the radio is at. } private void OnRadioToggle(EntityUid uid, StationRadioReceiverComponent comp, ActivateInWorldEvent args) @@ -235,5 +236,15 @@ private void StopAllReceivers() RaiseLocalEvent(receiver, new StationRadioMediaStoppedEvent()); } } + + /// + /// Display whether or not the station radio is at full or low volume when examined. + /// + private void OnExamined(EntityUid uid, StationRadioReceiverComponent comp, ref ExaminedEvent args) + { + args.PushMarkup(Loc.GetString(comp.LowVolume + ? "station-radio-receiver-examine-low-volume" + : "station-radio-receiver-examine-full-volume")); + } // Starlight - End } diff --git a/Content.Shared/_Goobstation/StationRadio/Systems/VinylPlayerSystem.cs b/Content.Shared/_Goobstation/StationRadio/Systems/VinylPlayerSystem.cs index e15e5f646544..21275dc1497c 100644 --- a/Content.Shared/_Goobstation/StationRadio/Systems/VinylPlayerSystem.cs +++ b/Content.Shared/_Goobstation/StationRadio/Systems/VinylPlayerSystem.cs @@ -4,11 +4,10 @@ using Content.Shared.DeviceLinking; using Content.Shared.Power; using Content.Shared.Power.EntitySystems; -using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Network; -using Content.Shared._Goobstation.StationRadio.Systems; // Starlight - Remove Server Check from VinylSummonSystem +using Content.Shared.Examine; // Starlight - Shift Click to view what Vinyl is inserted. using Robust.Shared.Timing; // Starlight - Add Station Radio Resume Play namespace Content.Shared._Goobstation.StationRadio.Systems; // Starlight - _Goob -> _Goobstation @@ -22,6 +21,8 @@ public sealed partial class VinylPlayerSystem : EntitySystem [Dependency] private StationRadioReceiverSystem _stationRadio = default!; // Starlight - Remove Server Check from VinylSummonSystem [Dependency] private IGameTiming _timing = default!; // Starlight - Add Station Radio Resume Play + [Dependency] private readonly SharedContainerSystem _container = default!; // Starlight - Shift Click to view what Vinyl is inserted. + public override void Initialize() { base.Initialize(); @@ -29,6 +30,8 @@ public override void Initialize() SubscribeLocalEvent(OnVinylRemove); SubscribeLocalEvent(OnDestruction); SubscribeLocalEvent(OnPowerChanged); + + SubscribeLocalEvent(OnExamined); // Starlight - Shift Click to view what Vinyl is inserted. } private void OnPowerChanged(EntityUid uid, VinylPlayerComponent comp, PowerChangedEvent args) @@ -154,4 +157,21 @@ private bool CheckForRadioServer(EntityUid uid) } return false; } + // Starlight - Start - Shift Click to view what Vinyl is inserted. + + /// + /// Show what vinyl is currently inserted when examined. + /// + private void OnExamined(EntityUid uid, VinylPlayerComponent comp, ref ExaminedEvent args) + { + if (!_container.TryGetContainer(uid, "vinyl", out var container) || container.ContainedEntities.Count == 0) // confirm actual container ID + { + args.PushMarkup(Loc.GetString("vinyl-player-examine-empty")); + return; + } + + var vinyl = container.ContainedEntities[0]; + args.PushMarkup(Loc.GetString("vinyl-player-examine-loaded", ("vinyl", Name(vinyl)))); + } + // Starlight - End } diff --git a/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl b/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl index 20c0085cf206..eba46d94f72a 100644 --- a/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl +++ b/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl @@ -10,3 +10,9 @@ signal-port-description-radio-server = The input of the radio server, connect a vinyl-popout-no-station = The vinyl ejects itself, you're not on a station! vinyl-popout-no-power = The vinyl ejects itself, the player isn't powered! vinyl-popout-no-radio-connection = The vinyl ejects itself, the player isn't connected to the radio system! + +vinyl-player-examine-empty = It's empty. +vinyl-player-examine-loaded = There's a copy of { $vinyl } inside. + +station-radio-receiver-examine-full-volume = It's playing at full volume. +station-radio-receiver-examine-low-volume = It's playing at low volume. From 816ad4de82b38da512983e611f6d8bfb333c2399 Mon Sep 17 00:00:00 2001 From: Huaqas Date: Fri, 7 Aug 2026 22:10:33 +0800 Subject: [PATCH 04/14] Give Radio Hosts Service Access Almost forgot this. --- Resources/Prototypes/_Goobstation/Roles/Jobs/Crew/radiohost.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/_Goobstation/Roles/Jobs/Crew/radiohost.yml b/Resources/Prototypes/_Goobstation/Roles/Jobs/Crew/radiohost.yml index d604fa04feb6..7b81a2b0d807 100644 --- a/Resources/Prototypes/_Goobstation/Roles/Jobs/Crew/radiohost.yml +++ b/Resources/Prototypes/_Goobstation/Roles/Jobs/Crew/radiohost.yml @@ -9,6 +9,7 @@ access: - Maintenance - Journalism + - Service - type: startingGear id: RadioHostGear From 92890f446492d03a2c27520faae4784cbd390cac Mon Sep 17 00:00:00 2001 From: Huaqas Date: Sun, 9 Aug 2026 18:50:15 +0800 Subject: [PATCH 05/14] Add access to jobs that should have it. BSO, NTR and Reporter all get Journalism. Service Workers get Journalism as extended access. --- Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml | 1 + Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml | 1 + .../_Starlight/Roles/Jobs/Representatives/blueshield.yml | 1 + .../Roles/Jobs/Representatives/nanotrasenrepresentative.yml | 1 + 4 files changed, 4 insertions(+) diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml index 72b14badf4be..54fbe08ff5e4 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml @@ -18,6 +18,7 @@ - Hydroponics # Starlight extendedAccess: - Theatre # Starlight + - Journalism # Starlight # - Hydroponics # Starlight - type: startingGear diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml index 8ec0abfab411..61453ca6bb30 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml @@ -12,6 +12,7 @@ access: - Service - Maintenance + - Journalism # Starlight - type: startingGear id: ReporterGear diff --git a/Resources/Prototypes/_Starlight/Roles/Jobs/Representatives/blueshield.yml b/Resources/Prototypes/_Starlight/Roles/Jobs/Representatives/blueshield.yml index ce9051cc2f4d..868b3492d608 100644 --- a/Resources/Prototypes/_Starlight/Roles/Jobs/Representatives/blueshield.yml +++ b/Resources/Prototypes/_Starlight/Roles/Jobs/Representatives/blueshield.yml @@ -56,6 +56,7 @@ - Mining - SalvageLead - Debrief + - Journalism special: - !type:AddImplantSpecial implants: [MindShieldImplant] diff --git a/Resources/Prototypes/_Starlight/Roles/Jobs/Representatives/nanotrasenrepresentative.yml b/Resources/Prototypes/_Starlight/Roles/Jobs/Representatives/nanotrasenrepresentative.yml index 6f8949d2aef0..416d821553c1 100644 --- a/Resources/Prototypes/_Starlight/Roles/Jobs/Representatives/nanotrasenrepresentative.yml +++ b/Resources/Prototypes/_Starlight/Roles/Jobs/Representatives/nanotrasenrepresentative.yml @@ -52,6 +52,7 @@ - Surgery - Paramedic - Debrief + - Journalism special: - !type:AddImplantSpecial implants: [MindShieldImplant] From b7ad4f02f5b820b0b22f2888e664675cf94cdeeb Mon Sep 17 00:00:00 2001 From: Huaqas Date: Sun, 9 Aug 2026 21:06:46 +0800 Subject: [PATCH 06/14] Hide Station Radio Messages from Ghost Chat (broken) Also more documentation since this is a upstream system and as much documentation should be provided. This introduces a bug that causes messages to be hidden from the radio when it is in lowvolume mode. I don't know how to fix. --- .../Radio/EntitySystems/RadioDeviceSystem.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs index 375ec2986869..f5b4ff01af6f 100644 --- a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs @@ -208,16 +208,21 @@ private void OnReceiveRadio(EntityUid uid, RadioSpeakerComponent component, ref ("originalName", nameEv.VoiceName)); // Starlight - Start - Radio Host - var chatType = TryComp(uid, out var receiverComp) && receiverComp.LowVolume - ? InGameICChatType.Whisper - : InGameICChatType.Speak; + var chatType = InGameICChatType.Whisper; // Default, messages from radios are sent as whispers. + var transmitRange = ChatTransmitRange.GhostRangeLimit; // Default, all ghosts can hear whispers from radios. + if (TryComp(uid, out var receiverComp)) + { + transmitRange = ChatTransmitRange.HideChat; // Message hidden from chat if from a Station Radio. + chatType = receiverComp.LowVolume ? InGameICChatType.Whisper : InGameICChatType.Speak; // Radios will talk loudly if at full volume. + } // Starlight - End // log to chat so people can identity the speaker/source, but avoid clogging ghost chat if there are many radios var message = args.OriginalChatMsg.Message; // Starlight-edit: The chat system will handle the rest and re-obfuscate if needed. _chat.TrySendInGameICMessage(uid, message, - chatType, // Starlight - Radio Host (ChatTransmitRange.GhostRangeLimit -> chatType) - ChatTransmitRange.GhostRangeLimit, nameOverride: name, checkRadioPrefix: false, + chatType, // Starlight - Radio Host (InGameICChatType.Whisper -> chatType) + transmitRange,// Starlight - Radio Host (ChatTransmitRange.GhostRangeLimit -> transmitRange) + nameOverride: name, checkRadioPrefix: false, languageOverride: args.Language); // Starlight } From 8d347b6b4f2718b5ec48c9436947ecf248267f8d Mon Sep 17 00:00:00 2001 From: Huaqas Date: Sun, 9 Aug 2026 21:31:10 +0800 Subject: [PATCH 07/14] Add examine text to Radio Station Server You can now examine the radio server to see if it is recording or not. --- .../EntitySystems/SharedRadioDeviceSystem.cs | 23 +++++++++++++++++++ .../_Goobstation/machines/stationradio.ftl | 3 +++ 2 files changed, 26 insertions(+) diff --git a/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs b/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs index bdeb453bc664..795cd7b0c880 100644 --- a/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs +++ b/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs @@ -1,5 +1,7 @@ using Content.Shared.Popups; using Content.Shared.Radio.Components; +using Content.Shared._Goobstation.StationRadio.Components; // Starlight - Examine the station radio server to see if microphone is active. +using Content.Shared.Examine; // Starlight - Examine the station radio server to see if microphone is active. namespace Content.Shared.Radio.EntitySystems; @@ -49,5 +51,26 @@ public void SetSpeakerEnabled(EntityUid uid, EntityUid? user, bool enabled, bool RemCompDeferred(uid); } #endregion + + #region Starlight + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnExamined); + } + + /// + /// Examining a Radio Station Server will now tell you if it is recording or not. + /// + private void OnExamined(EntityUid uid, StationRadioServerComponent comp, ref ExaminedEvent args) + { + if (!TryComp(uid, out var mic)) + return; + + args.PushMarkup(Loc.GetString(mic.Enabled + ? "station-radio-server-examine-recording" + : "station-radio-server-examine-not-recording")); + } + #endregion } diff --git a/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl b/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl index eba46d94f72a..054a9ea56e63 100644 --- a/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl +++ b/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl @@ -16,3 +16,6 @@ vinyl-player-examine-loaded = There's a copy of { $vinyl } inside. station-radio-receiver-examine-full-volume = It's playing at full volume. station-radio-receiver-examine-low-volume = It's playing at low volume. + +station-radio-server-examine-recording = The station server is not recording. +station-radio-server-examine-not-recording = The station server is currently recording. From af6b3375aa3af4b3a93fd4314093a29f62b41a06 Mon Sep 17 00:00:00 2001 From: Huaqas Date: Sun, 9 Aug 2026 21:32:06 +0800 Subject: [PATCH 08/14] Switch comment regions to actual regions. Just doing what the rabbit wants. Literally no changes in code, its all formatting to appease our AI overlord. --- .../StationRadio/Systems/StationRadioReceiverSystem.cs | 5 ++--- .../_Goobstation/StationRadio/Systems/VinylPlayerSystem.cs | 4 ++-- .../Locale/en-US/_Goobstation/machines/stationradio.ftl | 2 ++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs b/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs index 1f206ff05b08..2073cf5be140 100644 --- a/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs +++ b/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs @@ -133,8 +133,7 @@ private void OnServerPowerChanged(EntityUid uid, StationRadioServerComponent com } } - // Starlight - Start - Remove Server Check from VinylSummonSystem - + #region Starlight /// /// Method for getting the current volume of the station radio. /// @@ -246,5 +245,5 @@ private void OnExamined(EntityUid uid, StationRadioReceiverComponent comp, ref E ? "station-radio-receiver-examine-low-volume" : "station-radio-receiver-examine-full-volume")); } - // Starlight - End + #endregion } diff --git a/Content.Shared/_Goobstation/StationRadio/Systems/VinylPlayerSystem.cs b/Content.Shared/_Goobstation/StationRadio/Systems/VinylPlayerSystem.cs index 21275dc1497c..463676795749 100644 --- a/Content.Shared/_Goobstation/StationRadio/Systems/VinylPlayerSystem.cs +++ b/Content.Shared/_Goobstation/StationRadio/Systems/VinylPlayerSystem.cs @@ -157,8 +157,8 @@ private bool CheckForRadioServer(EntityUid uid) } return false; } - // Starlight - Start - Shift Click to view what Vinyl is inserted. + #region Starlight /// /// Show what vinyl is currently inserted when examined. /// @@ -173,5 +173,5 @@ private void OnExamined(EntityUid uid, VinylPlayerComponent comp, ref ExaminedEv var vinyl = container.ContainedEntities[0]; args.PushMarkup(Loc.GetString("vinyl-player-examine-loaded", ("vinyl", Name(vinyl)))); } - // Starlight - End + #endregion } diff --git a/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl b/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl index 054a9ea56e63..cce6dd0ae54e 100644 --- a/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl +++ b/Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl @@ -11,6 +11,7 @@ vinyl-popout-no-station = The vinyl ejects itself, you're not on a station! vinyl-popout-no-power = The vinyl ejects itself, the player isn't powered! vinyl-popout-no-radio-connection = The vinyl ejects itself, the player isn't connected to the radio system! +# Starlight - Station Radio Examination Text. vinyl-player-examine-empty = It's empty. vinyl-player-examine-loaded = There's a copy of { $vinyl } inside. @@ -19,3 +20,4 @@ station-radio-receiver-examine-low-volume = It's playing at low volume. station-radio-server-examine-recording = The station server is not recording. station-radio-server-examine-not-recording = The station server is currently recording. +# Starlight - End From b1fcd77a0b20146f5b1a4ef6b3222710197461ef Mon Sep 17 00:00:00 2001 From: Huaqas Date: Sun, 9 Aug 2026 21:48:25 +0800 Subject: [PATCH 09/14] Add the comments back in. Make up your damn mind rabbit. --- .../Radio/EntitySystems/SharedRadioDeviceSystem.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs b/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs index 795cd7b0c880..e92fd2372823 100644 --- a/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs +++ b/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs @@ -52,7 +52,9 @@ public void SetSpeakerEnabled(EntityUid uid, EntityUid? user, bool enabled, bool } #endregion - #region Starlight + // Starlight - Start + #region Starlight + public override void Initialize() { base.Initialize(); @@ -68,9 +70,10 @@ private void OnExamined(EntityUid uid, StationRadioServerComponent comp, ref Exa return; args.PushMarkup(Loc.GetString(mic.Enabled - ? "station-radio-server-examine-recording" - : "station-radio-server-examine-not-recording")); + ? "station-radio-server-examine-not-recording" + : "station-radio-server-examine-recording")); } #endregion + // Starlight - End } From e4cfe65a0984edd1fa374b9963cdd8cb45dcf8dd Mon Sep 17 00:00:00 2001 From: Huaqas Date: Sun, 9 Aug 2026 21:50:46 +0800 Subject: [PATCH 10/14] I hate em I hate whitespaces. Grrrrr! --- Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs b/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs index e92fd2372823..04d079ab4379 100644 --- a/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs +++ b/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs @@ -53,8 +53,8 @@ public void SetSpeakerEnabled(EntityUid uid, EntityUid? user, bool enabled, bool #endregion // Starlight - Start - #region Starlight - + #region Starlight + public override void Initialize() { base.Initialize(); From 3cac034be9ea67abe00bc21230db5ef311ee5323 Mon Sep 17 00:00:00 2001 From: Huaqas Date: Sun, 9 Aug 2026 21:53:26 +0800 Subject: [PATCH 11/14] I also lowkey hate this rabbit at times I don't need to add a region to define it if i create a comment region. But if I do it the way he wants it, he wants me to add a comment region back. bruh --- .../StationRadio/Systems/StationRadioReceiverSystem.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs b/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs index 2073cf5be140..3fc8f2cd7b99 100644 --- a/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs +++ b/Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs @@ -133,6 +133,7 @@ private void OnServerPowerChanged(EntityUid uid, StationRadioServerComponent com } } + // Starlight - Start #region Starlight /// /// Method for getting the current volume of the station radio. @@ -246,4 +247,5 @@ private void OnExamined(EntityUid uid, StationRadioReceiverComponent comp, ref E : "station-radio-receiver-examine-full-volume")); } #endregion + // Starlight - End } From 0d9fe524c15a35c11baa682b5641f0a5e4885785 Mon Sep 17 00:00:00 2001 From: Huaqas Date: Sun, 9 Aug 2026 21:57:59 +0800 Subject: [PATCH 12/14] Update SharedRadioDeviceSystem.cs --- Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs b/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs index 04d079ab4379..dd24f505e6b8 100644 --- a/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs +++ b/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs @@ -59,6 +59,7 @@ public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnAfterHandleState); } /// From c44595740b351c70ec3555472d09567f7014112d Mon Sep 17 00:00:00 2001 From: Huaqas Date: Sun, 9 Aug 2026 22:02:33 +0800 Subject: [PATCH 13/14] Revert "Update SharedRadioDeviceSystem.cs" This reverts commit 0d9fe524c15a35c11baa682b5641f0a5e4885785. --- Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs b/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs index dd24f505e6b8..04d079ab4379 100644 --- a/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs +++ b/Content.Shared/Radio/EntitySystems/SharedRadioDeviceSystem.cs @@ -59,7 +59,6 @@ public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnExamined); - SubscribeLocalEvent(OnAfterHandleState); } /// From 1cfd26f2f8dd4e3a8d7435216f2beaa015be301f Mon Sep 17 00:00:00 2001 From: Huaqas Date: Mon, 10 Aug 2026 18:10:08 +0800 Subject: [PATCH 14/14] Fix whispers not appearing on low volume. The last bug to fix. The station radio will no longer send messages to ghosts, and the Speaking and Whispering based on whether LowVolume is equal to True or False is now officially fixed. Thank you so much to Centronias who solved this bug for me. Its also why is in // Moffstation comments because it's his fix and I am so thankful for him saving me wasting my day off trying to bootleg a fix. --- Content.Server/Chat/Systems/ChatSystem.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index 7073735be0f3..0f104034a8cf 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -634,7 +634,10 @@ private void SendEntityWhisper( if (session.AttachedEntity is not { Valid: true } listener) // Starlight-edit: Languages continue; - if (MessageRangeCheck(session, data, range) != MessageRangeCheckResult.Full) + // Moffstation - Start - Radio Host, hide chat messages from station radio + var rangeCheck = MessageRangeCheck(session, data, range); + if (rangeCheck == MessageRangeCheckResult.Disallowed) + // Moffstation - End continue; // Won't get logged to chat, and ghosts are too far away to see the pop-up, so we just won't send it to them. // Starlight - Start @@ -673,7 +676,7 @@ private void SendEntityWhisper( wrappedMessage = WrapWhisperMessage(source, "chat-manager-entity-whisper-unknown-wrap-message", string.Empty, result, language, obfuscated); } - _chatManager.ChatMessageToOne(ChatChannel.Whisper, result, wrappedMessage, source, false, session.Channel); + _chatManager.ChatMessageToOne(ChatChannel.Whisper, result, wrappedMessage, source, rangeCheck == MessageRangeCheckResult.HideChat, session.Channel); // Moffstation - Radio Host, hide chat messages from station radio // Starlight - End }