Radio Host Job and Equipment - #5288
Conversation
When you can Ctrl+C, Ctrl+V.
Job isn't being added to Moff so it wasn't apart of the port.
There was a problem hiding this comment.
Some paths use _Goob and others use _Goobstation, Everything should be set to either one or the other, including namespaces. I suggest _Goobstation.
I also see that you did this in one commit instead of cherry picking which is very bad for anyone trying to backtrace stuff, and just general attributing.
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThis PR adds a complete station-radio and Radio Host feature. It includes synchronized playback, vinyl-triggered game rules, new machines and items, Radio Host job content, distribution prototypes, access configuration, localization, audio attributions, and texture metadata. ChangesStation radio playback and vinyl rules
Radio Host content and integration
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 4❌ Failed checks (4 warnings)
✅ Passed checks (4 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 17
🧹 Nitpick comments (3)
Resources/Audio/_Goobstation/RadioStation/CDs/misc/attributions.yml (1)
11-14: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick winUse a real source URL for the Jvne recordings.
Great organization on the attribution groups! For the CC-BY-ND-4.0 block,
source: "https://juneialduncan21@gmail.com"is not a valid HTTPS URL and can’t serve as a source hyperlink. Replace it with the author/source page, or store the email in a contact field if contact details are needed.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Resources/Audio/_Goobstation/RadioStation/CDs/misc/attributions.yml` around lines 11 - 14, Replace the invalid source value in the Jvne recordings attribution block with a valid HTTPS author or source page URL, keeping the CC-BY-ND-4.0 metadata unchanged; if the email must be retained, move it to an appropriate contact field.Content.Shared/_Goob/StationRadio/Systems/StationRadioReceiverSystem.cs (2)
60-66: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winExtract the
0.1flow-volume gain into a named constant.As per coding guidelines, "All meaningful numeric values, repeated values, thresholds, limits, and business-related numbers must be extracted into clearly named constants" in system code;
0.1fhere is a tunable gameplay threshold, not an obvious literal like 0/1/2.♻️ Proposed fix
+ private const float LowVolumeGain = 0.1f; + private static float GetGain(StationRadioReceiverComponent comp, bool powered) { if (!comp.Active || !powered) return 0f; - return comp.LowVolume ? 0.1f : 1f; + return comp.LowVolume ? LowVolumeGain : 1f; }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Content.Shared/_Goob/StationRadio/Systems/StationRadioReceiverSystem.cs` around lines 60 - 66, In GetGain, replace the inline low-volume gain literal 0.1f with a clearly named constant defined near the method or class constants. Use that constant in the comp.LowVolume branch while preserving the existing inactive/unpowered and normal-volume gains.Source: Coding guidelines
27-57: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winNice
GetGainhelper, but the other handlers still duplicate its logic.
GetGainencapsulates the correct active/power/low-volume handling, butOnPowerChanged,OnRadioToggle, andOnMediaPlayedbypass it and reset low-volume playback to full gain. ReuseGetGain(comp, <powered>)in those handlers so the alternative volume preference is respected.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Content.Shared/_Goob/StationRadio/Systems/StationRadioReceiverSystem.cs` around lines 27 - 57, Update OnPowerChanged, OnRadioToggle, and OnMediaPlayed to set audio gain through the existing GetGain helper, passing the relevant powered state instead of duplicating active/power/volume logic. Preserve each handler’s current control flow while ensuring low-volume preferences are respected.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Content.Server/_Goobstation/StationRadio/VinylSummonRuleSystem.cs`:
- Around line 199-203: Move the hardcoded burn volume and ash prototype into
configurable [DataField] properties on VinylSummonRuleComponent, such as
BurnSoundParams defaulting to the current audio parameters and AshPrototype
defaulting to the current prototype ID. Update the summon logic to pass these
component fields to _audio.PlayPvs and Spawn instead of using -5f and "Ash"
directly.
In `@Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs`:
- Around line 210-212: Separate radio-prefix parsing from the receiver volume
setting in the relay call within RadioDeviceSystem: stop using
RadioSpeakerComponent.LouderSpeech for checkRadioPrefix, and introduce or reuse
a dedicated component/data field representing whether the relayed message is
parsed as radio chat. Ensure volume UI changes no longer affect relay parsing,
while preserving the intended relay behavior.
In `@Content.Shared/_Goob/StationRadio/Systems/VinylPlayerSystem.cs`:
- Around line 115-128: The duplicated radio-connectivity checks can disagree
about server power state. In
Content.Shared/_Goob/StationRadio/Systems/VinylPlayerSystem.cs lines 115-128,
update CheckForRadioServer to use the shared/canonical connectivity logic or
require _power.IsPowered(linked) alongside StationRadioServerComponent; in
Content.Server/_Goobstation/StationRadio/VinylSummonRuleSystem.cs lines 230-254,
retain or extract CheckForRadioConnection as the canonical implementation and
have VinylPlayerSystem reuse it, ensuring both paths require a powered server.
- Around line 30-98: Update the receiver event handling in OnPowerChanged,
OnDestruction, OnVinylInserted, and OnVinylRemove to filter receivers through
the linked radio rig/server network identified by CheckForRadioRig, rather than
broadcasting to every StationRadioReceiverComponent on the map. Reuse the rig’s
existing network/server relationship when selecting receivers, while preserving
the current media event types and playback conditions.
- Line 62: Update VinylPlayerComponent to add a configurable [DataField]
DefaultParams mirroring StationRadioReceiverComponent.DefaultParams, then update
VinylPlayerSystem’s PlayPredicted call to use vinylcomp.DefaultParams instead of
constructing hardcoded volume and max-distance values.
In
`@Resources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/attributions.yml`:
- Line 1: Update the files lists in
Resources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/attributions.yml
(line 1) and
Resources/Audio/_Goobstation/RadioStation/Vinyls/music/PMMusic/attributions.yml
(line 1) so each audio filename is a separate list item: split
NightInVenice.ogg, BurnTheWorldWaltz.ogg, and FeralAngelWaltz.ogg in the
KevinMacleod attribution, and split CelloSuite.ogg from WinterVivaldi.ogg in the
PMMusic attribution.
In `@Resources/Locale/en-US/_Goobstation/job/job-description.ftl`:
- Line 1: Update the job-description-radiohost text to use the possessive
“station’s local” instead of “stations local,” leaving the rest of the
description unchanged.
In `@Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl`:
- Line 2: Update the signal-port-description-vinyl-player localization text to
use the possessive “vinyl player’s” instead of “vinyl players,” preserving the
rest of the description unchanged.
In `@Resources/Prototypes/_Goobstation/Catalog/Fills/RadioHost/discs.yml`:
- Line 13: Remove the duplicate CDAdvertBecomeSilicon entry from the affected
catalog definitions, keeping only the intended weighted entry. Ensure the
remaining entry retains its effective weight of 1.5.
In `@Resources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/base.yml`:
- Around line 141-142: Swap the insertSound and ejectSound asset assignments in
both base sleeve variants so inserting uses vinylInsert.ogg and ejecting uses
vinylEject.ogg. Update the corresponding sound fields near the sleeve
definitions without changing other configuration.
In `@Resources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/cds.yml`:
- Around line 34-35: Update the visible name for the CDAdvertChemistryAdvert
prototype from “Advertment” to “Advertisement,” preserving the prototype ID and
all other fields.
In
`@Resources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/sleeves.yml`:
- Around line 53-55: Correct the player-facing sleeve descriptions by changing
“vinyle” to “vinyl” and “have know” to “have known” in the VinylSleeveDevil
entry and the additional entries at the referenced location.
In `@Resources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/vinyls.yml`:
- Around line 458-461: Update the VinylLunch prototype by removing its empty
description field so it inherits the base description, or replace it with a
non-empty description.
In `@Resources/Prototypes/_Goobstation/Loadouts/role_loadouts.yml`:
- Line 14: Resolve the unfinished Radio Host loadout at the TODO marker by
adding the intended Radio Host-specific equipment, or remove the marker if the
loadout is intentionally complete. Keep the existing loadout structure and
baseline group coverage unchanged.
In `@Resources/Prototypes/Entities/Structures/Machines/lathe.yml`:
- Line 147: Move ServiceBoardsStaticGoob from Autolathe.staticPacks to
CircuitImprinter.staticPacks, preserving the existing pack entry and comment so
StationRadioCircuitboard is available only through the circuit imprinter.
In `@Resources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/meta.json`:
- Around line 3-66: Replace root-level contributor strings with "State based
copyright" and add accurate per-state copyright metadata, limited to states each
contributor actually modified. In
Resources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/meta.json (lines
3-66), assign Goonstation, Goobstation, and Huaqas provenance to the applicable
states; in cds.rsi/meta.json (lines 4-18), attribute icon, synd-cd, and jne-cd
individually; and in sleeves.rsi/meta.json (lines 4-135), attribute the imported
sleeve states. Add Jvne attribution to the applicable states in
Resources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/meta.json (lines
4-45). In radiostationrig.rsi/meta.json (lines 4-17) and
stationradioserver.rsi/meta.json (lines 4-17), identify source and edit
provenance for icon and unlit; in stationradio.rsi/meta.json (lines 4-36),
resolve the unknown original source before adding verified per-state provenance.
In
`@Resources/Textures/_Goobstation/Structures/Machines/StationRadio/stationradio.rsi/meta.json`:
- Around line 3-4: Update the stationradio asset metadata by replacing the
unverifiable “Taken from Unknown” provenance with a traceable original source
and verified license information, or replace the sprite with an asset whose
provenance and CC-BY-SA-3.0 redistribution rights can be documented. Keep the
existing recoloring and animation attribution where applicable.
---
Nitpick comments:
In `@Content.Shared/_Goob/StationRadio/Systems/StationRadioReceiverSystem.cs`:
- Around line 60-66: In GetGain, replace the inline low-volume gain literal 0.1f
with a clearly named constant defined near the method or class constants. Use
that constant in the comp.LowVolume branch while preserving the existing
inactive/unpowered and normal-volume gains.
- Around line 27-57: Update OnPowerChanged, OnRadioToggle, and OnMediaPlayed to
set audio gain through the existing GetGain helper, passing the relevant powered
state instead of duplicating active/power/volume logic. Preserve each handler’s
current control flow while ensuring low-volume preferences are respected.
In `@Resources/Audio/_Goobstation/RadioStation/CDs/misc/attributions.yml`:
- Around line 11-14: Replace the invalid source value in the Jvne recordings
attribution block with a valid HTTPS author or source page URL, keeping the
CC-BY-ND-4.0 metadata unchanged; if the email must be retained, move it to an
appropriate contact field.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: CHILL
Plan: Pro Plus
Run ID: e5206aed-f922-4a44-8f53-e63961dc10ef
⛔ Files ignored due to path filters (207)
Resources/Audio/_Goobstation/RadioStation/CDs/adverts/bill_movie.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/adverts/captain_training.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/adverts/cargonia.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/adverts/chemistry.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/adverts/danitos_burritos.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/adverts/dans_tickets.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/adverts/grones.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/adverts/overlord.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/adverts/pope_crunch_cereal.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/adverts/quick_noodles.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/JNE.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/NextUp.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/Ninja.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/amusing_duck.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/cloning_psa.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/commander_announcement.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/commander_figurines.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/commander_resignation.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/commander_support.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/numbers.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/numbersAdmin.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/numbersShort.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/security_psa.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/CDs/misc/syndicateFM.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/misc/trial_of_heisenbee.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/AirportLounge.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/BoogieParty.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/BurnTheWorldWaltz.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/Corncob.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/DeadlyRoulette.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/FeralAngelWaltz.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/JingleBells.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/LateNightRadio.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/MesmerizingGalaxyLoop.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/NightInVenice.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/SpaceJazz.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/VibingOverVenus.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/OpenTTDJourney.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/PMMusic/AlsoSprachZarathustra.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/PMMusic/CelloSuite.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/PMMusic/RideOfTheValkyries.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/PMMusic/RomeoAndJuliet.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/PMMusic/RussianDance.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/PMMusic/TheFlowerDuet.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/PMMusic/WinterVivaldi.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/Fart/buttris.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/Fart/core_of_poo.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/Fart/disco_poo.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/Fart/eggshell.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/Fart/fart_elise.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/Fart/honkmas.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/Fart/poo.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/Fart/uguu.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/Fart/warriors_honk.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/Fart/we_are_number_two.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/adventure_3.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/adventure_4.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/adventure_5.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/after_party.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/anonymous.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/atlas.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/atmosphere.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/banjo1.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/beaches.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/biodome.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/black_wing_interface.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/bumblebee.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/chill_1.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/chill_2.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/chill_3.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/chill_4.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/christmassong.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/cloudskymanguy.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/dance_on_a_space_volcano.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/distant_star.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/everyone_is_so_alive.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/floaty.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/funkadelic.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/giga.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/graveyard.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/groovy.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/high_technologic_beat.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/it_feels_good_to_be_alive_too.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/key_lime.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/lay_egg_is_true.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/lunch.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/maxi.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/monkey_riot.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/oh_no_evil_star.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/planets.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/repose.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/riverdancer.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/space_gardener.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/upbeat_1.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/upbeat_2.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/waystations.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/xtra.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/mrjajkes/EphedrineOverdose.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/mrjajkes/GetThatAntag.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/mrjajkes/GreytideSong.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/mrjajkes/LAW2OPENARMORY.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/mrjajkes/NUKIES_TRAP.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/mrjajkes/RunningOutCover.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/mrjajkes/SponsoredBySyndicate.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/mrjajkes/TraitorousIntent.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/mrjajkes/violet.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/music/peakasshole.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/vinylEject.oggis excluded by!**/*.oggResources/Audio/_Goobstation/RadioStation/Vinyls/vinylInsert.oggis excluded by!**/*.oggResources/Textures/_Goobstation/Clothing/Ears/Headsets/radiohost.rsi/alt-equipped-EARS.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Clothing/Ears/Headsets/radiohost.rsi/icon_alt.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Interface/Misc/job_icons.rsi/radiohost.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Markers/jobs.rsi/green.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Markers/jobs.rsi/radiohost.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/cds.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/cds.rsi/jne-cd.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/cds.rsi/synd-cd.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/ai-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/blockycraft-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/christmas-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/clown-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/coffee-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/devil-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/djclown-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/djtider-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/eye-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/fart-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/fisherman-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/flash-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/heisenbee-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/hockey-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/janitor-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/japan-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/mgs-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/nb-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/newnanoyork-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/nukedisk-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/pda-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/peace-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/pickle-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/pizza-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/plainbeige-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/plainblack-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/plainwhite-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/pride-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/questional-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/rat-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/reactor-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/redsun-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/shulker-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/skull-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/station13-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/station14-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/sunnysideoflavaland-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/th-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/trans-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/vampire-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/weird-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/welcometoss13-vinyl-sleeve.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/ai-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/base-dark.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/base-light.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/base-medium.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/base-shine.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/broken-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/carrot-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/default.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/devil-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/earth-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/floaty-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/forgotten-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/glossy-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/label.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/nb-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/pizza-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/pride-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/trans-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/ttd-vinyl-disc.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Misc/id_cards.rsi/default.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Objects/Misc/id_cards.rsi/idradiohost.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/base.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/cd-0.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/cd-1.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/cd-10.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/cd-2.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/cd-3.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/cd-4.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/cd-5.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/cd-6.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/cd-7.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/cd-8.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/cd-9.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/radiostationrig.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/radiostationrig.rsi/unlit.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/stationradio.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/stationradio.rsi/unlit.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/stationradioserver.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/stationradioserver.rsi/unlit.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/tapedeck.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/tapedeck.rsi/unlit.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/vinylplayer.rsi/disk_installed.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/vinylplayer.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/vinylplayer.rsi/panel.pngis excluded by!**/*.pngResources/Textures/_Goobstation/Structures/Machines/StationRadio/vinylplayer.rsi/unlit.pngis excluded by!**/*.pngResources/Textures/_Starlight/Structures/Machines/vinylplayer.rsi/off.pngis excluded by!**/*.pngResources/Textures/_Starlight/Structures/Machines/vinylplayer.rsi/on.pngis excluded by!**/*.pngResources/Textures/_Starlight/Structures/Machines/vinylplayer.rsi/select.pngis excluded by!**/*.png
📒 Files selected for processing (93)
Content.Server/Radio/EntitySystems/RadioDeviceSystem.csContent.Server/_Goobstation/StationRadio/VinylSummonRuleSystem.csContent.Shared/Radio/Components/RadioSpeakerComponent.csContent.Shared/_Goob/StationRadio/Components/RadioRigComponent.csContent.Shared/_Goob/StationRadio/Components/StationRadioReceiverComponent.csContent.Shared/_Goob/StationRadio/Components/StationRadioServerComponent.csContent.Shared/_Goob/StationRadio/Components/VinylComponent.csContent.Shared/_Goob/StationRadio/Components/VinylPlayerComponent.csContent.Shared/_Goob/StationRadio/Components/VinylSummonRuleComponent.csContent.Shared/_Goob/StationRadio/Events/StationRadioMediaPlayedEvent.csContent.Shared/_Goob/StationRadio/Events/StationRadioMediaStoppedEvent.csContent.Shared/_Goob/StationRadio/Events/VinylSummonEvent.csContent.Shared/_Goob/StationRadio/Systems/StationRadioReceiverSystem.csContent.Shared/_Goob/StationRadio/Systems/VinylPlayerSystem.csResources/Audio/_Goobstation/RadioStation/CDs/adverts/attributions.ymlResources/Audio/_Goobstation/RadioStation/CDs/misc/attributions.ymlResources/Audio/_Goobstation/RadioStation/Vinyls/attributions.ymlResources/Audio/_Goobstation/RadioStation/Vinyls/misc/attributions.ymlResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/attributions.ymlResources/Audio/_Goobstation/RadioStation/Vinyls/music/PMMusic/attributions.ymlResources/Audio/_Goobstation/RadioStation/Vinyls/music/attributions.ymlResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/Fart/attributions.ymlResources/Audio/_Goobstation/RadioStation/Vinyls/music/goonstation/attributions.ymlResources/Audio/_Goobstation/RadioStation/Vinyls/music/mrjajkes/attributions.ymlResources/Locale/en-US/_Goobstation/access/accesslevel.ftlResources/Locale/en-US/_Goobstation/chat/managers/chat-manager.ftlResources/Locale/en-US/_Goobstation/communications/terror.ftlResources/Locale/en-US/_Goobstation/headsets/headsets.ftlResources/Locale/en-US/_Goobstation/job/job-description.ftlResources/Locale/en-US/_Goobstation/job/job-names.ftlResources/Locale/en-US/_Goobstation/machines/stationradio.ftlResources/Locale/en-US/_Goobstation/research/technologies.ftlResources/Locale/en-US/_Goobstation/round-end/round-end-summary-window.ftlResources/Locale/en-US/_Goobstation/uplink-catalog.ftlResources/Prototypes/Access/misc.ymlResources/Prototypes/Access/service.ymlResources/Prototypes/Entities/Markers/Spawners/Random/maintenance.ymlResources/Prototypes/Entities/Structures/Machines/lathe.ymlResources/Prototypes/Roles/Jobs/Command/head_of_personnel.ymlResources/Prototypes/Roles/Jobs/departments.ymlResources/Prototypes/_Goobstation/Access/journalism.ymlResources/Prototypes/_Goobstation/Catalog/Cargo/cargo_service.ymlResources/Prototypes/_Goobstation/Catalog/Fills/CDs/cdrack.ymlResources/Prototypes/_Goobstation/Catalog/Fills/Crates/cargo_service.ymlResources/Prototypes/_Goobstation/Catalog/Fills/RadioHost/discs.ymlResources/Prototypes/_Goobstation/Catalog/uplink_catalog.ymlResources/Prototypes/_Goobstation/DeviceLink/sink_ports.ymlResources/Prototypes/_Goobstation/DeviceLink/source_ports.ymlResources/Prototypes/_Goobstation/Entities/Clothing/Ears/headsets_alt.ymlResources/Prototypes/_Goobstation/Entities/Markers/Spawners/jobs.ymlResources/Prototypes/_Goobstation/Entities/Objects/Devices/Circuitboards/machine.ymlResources/Prototypes/_Goobstation/Entities/Objects/Devices/Electronics/door_access.ymlResources/Prototypes/_Goobstation/Entities/Objects/Devices/pda.ymlResources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/base.ymlResources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/basecustomvinyls.ymlResources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/cds.ymlResources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/sleeves.ymlResources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/vinyls.ymlResources/Prototypes/_Goobstation/Entities/Objects/Misc/identification_cards.ymlResources/Prototypes/_Goobstation/Entities/Structures/Doors/Airlocks/access.ymlResources/Prototypes/_Goobstation/Entities/Structures/Furniture/cdrack.ymlResources/Prototypes/_Goobstation/Entities/Structures/Machines/StationRadio/radio_recievers.ymlResources/Prototypes/_Goobstation/Entities/Structures/Machines/StationRadio/radio_server.ymlResources/Prototypes/_Goobstation/Entities/Structures/Machines/StationRadio/tape_deck.ymlResources/Prototypes/_Goobstation/Entities/Structures/Machines/StationRadio/vinyl_player.ymlResources/Prototypes/_Goobstation/Loadouts/role_loadouts.ymlResources/Prototypes/_Goobstation/Recipes/Construction/Graphs/furniture/cdrack.ymlResources/Prototypes/_Goobstation/Recipes/Lathes/Packs/circuits.ymlResources/Prototypes/_Goobstation/Recipes/Lathes/electronics.ymlResources/Prototypes/_Goobstation/Research/civilianservices.ymlResources/Prototypes/_Goobstation/Roles/Jobs/Crew/radiohost.ymlResources/Prototypes/_Goobstation/Roles/play_time_trackers.ymlResources/Prototypes/_Goobstation/StatusEffects/jobs.ymlResources/Prototypes/_Goobstation/Voice/speech_verbs.ymlResources/Prototypes/_Goobstation/radio_channels.ymlResources/Prototypes/_Goobstation/tags.ymlResources/Prototypes/_Goobstation/threats.ymlResources/Prototypes/_Starlight/Entities/Objects/Devices/Circuitboards/Machine/production.ymlResources/Prototypes/_Starlight/Entities/Structures/Machines/musical.ymlResources/Textures/_Goobstation/Clothing/Ears/Headsets/radiohost.rsi/meta.jsonResources/Textures/_Goobstation/Interface/Misc/job_icons.rsi/meta.jsonResources/Textures/_Goobstation/Markers/jobs.rsi/meta.jsonResources/Textures/_Goobstation/Objects/Fun/RadioHost/cds.rsi/meta.jsonResources/Textures/_Goobstation/Objects/Fun/RadioHost/sleeves.rsi/meta.jsonResources/Textures/_Goobstation/Objects/Fun/RadioHost/vinyl.rsi/meta.jsonResources/Textures/_Goobstation/Objects/Misc/id_cards.rsi/meta.jsonResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/meta.jsonResources/Textures/_Goobstation/Structures/Machines/StationRadio/radiostationrig.rsi/meta.jsonResources/Textures/_Goobstation/Structures/Machines/StationRadio/stationradio.rsi/meta.jsonResources/Textures/_Goobstation/Structures/Machines/StationRadio/stationradioserver.rsi/meta.jsonResources/Textures/_Goobstation/Structures/Machines/StationRadio/tapedeck.rsi/meta.jsonResources/Textures/_Goobstation/Structures/Machines/StationRadio/vinylplayer.rsi/meta.jsonResources/Textures/_Starlight/Structures/Machines/vinylplayer.rsi/meta.json
💤 Files with no reviewable changes (3)
- Resources/Textures/_Starlight/Structures/Machines/vinylplayer.rsi/meta.json
- Resources/Prototypes/_Starlight/Entities/Structures/Machines/musical.yml
- Resources/Prototypes/_Starlight/Entities/Objects/Devices/Circuitboards/Machine/production.yml
Also changes namespace from shared to server in VinylSummonRuleSystem.cs
Missed a directory when moving from Moff -> SL.
Last of yaml picks by Rabbit
Was for something else.
I haven't gotten the hang of cherry-picking. I have gone through all the blames and commits to find who has attributed to the code when I sought MIT permissions. So those should be clear. |
LouderSpeech is gone. Also fixed a bug causing Audio to Crackle and the defaultParams for a Radio Receiver being overwritten everytime you changed vinyl.
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Resources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/cds.yml (1)
104-106: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winPolish the Security PSA description.
The CD catalog looks solid overall; this description should read “for the station’s security department” instead of “for station security department.”
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Resources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/cds.yml` around lines 104 - 106, Update the description for CDAdvertSecurityPSA to use the phrasing “for the station’s security department,” preserving the rest of the catalog entry unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@Content.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.cs`:
- Around line 43-44: Update the playback call in the StationRadio receiver logic
to pass the already-created startParams to PlayPvs instead of
comp.DefaultParams, ensuring playback starts muted. Extract the -100f gain value
into a named constant if it remains in the implementation.
- Around line 34-39: Update OnRadioToggle to call Dirty(uid, comp) immediately
after changing comp.Active, ensuring the AutoNetworkedField state is
synchronized to clients while preserving the existing gain update.
---
Outside diff comments:
In `@Resources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/cds.yml`:
- Around line 104-106: Update the description for CDAdvertSecurityPSA to use the
phrasing “for the station’s security department,” preserving the rest of the
catalog entry unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: CHILL
Plan: Pro Plus
Run ID: 67abad1d-40c2-4021-8d19-fbd340f9ac39
📒 Files selected for processing (25)
Content.Server/Radio/EntitySystems/RadioDeviceSystem.csContent.Server/_Goobstation/StationRadio/VinylSummonRuleSystem.csContent.Shared/Radio/Components/RadioSpeakerComponent.csContent.Shared/_Goobstation/StationRadio/Components/RadioRigComponent.csContent.Shared/_Goobstation/StationRadio/Components/StationRadioReceiverComponent.csContent.Shared/_Goobstation/StationRadio/Components/StationRadioServerComponent.csContent.Shared/_Goobstation/StationRadio/Components/VinylComponent.csContent.Shared/_Goobstation/StationRadio/Components/VinylPlayerComponent.csContent.Shared/_Goobstation/StationRadio/Components/VinylSummonRuleComponent.csContent.Shared/_Goobstation/StationRadio/Events/StationRadioMediaPlayedEvent.csContent.Shared/_Goobstation/StationRadio/Events/StationRadioMediaStoppedEvent.csContent.Shared/_Goobstation/StationRadio/Events/VinylSummonEvent.csContent.Shared/_Goobstation/StationRadio/Systems/StationRadioReceiverSystem.csContent.Shared/_Goobstation/StationRadio/Systems/VinylPlayerSystem.csResources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/attributions.ymlResources/Audio/_Goobstation/RadioStation/Vinyls/music/PMMusic/attributions.ymlResources/Locale/en-US/_Goobstation/machines/stationradio.ftlResources/Prototypes/_Goobstation/Catalog/Cargo/cargo_service.ymlResources/Prototypes/_Goobstation/Catalog/Fills/RadioHost/discs.ymlResources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/base.ymlResources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/cds.ymlResources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/sleeves.ymlResources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/vinyls.ymlResources/Textures/_Goobstation/Objects/Fun/RadioHost/cds.rsi/meta.jsonResources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/meta.json
💤 Files with no reviewable changes (1)
- Resources/Prototypes/_Goobstation/Catalog/Fills/RadioHost/discs.yml
🚧 Files skipped from review as they are similar to previous changes (11)
- Resources/Audio/_Goobstation/RadioStation/Vinyls/music/KevinMacleod/attributions.yml
- Resources/Audio/_Goobstation/RadioStation/Vinyls/music/PMMusic/attributions.yml
- Resources/Textures/_Goobstation/Objects/Fun/RadioHost/cds.rsi/meta.json
- Resources/Locale/en-US/_Goobstation/machines/stationradio.ftl
- Content.Shared/Radio/Components/RadioSpeakerComponent.cs
- Resources/Textures/_Goobstation/Structures/Furniture/cdrack.rsi/meta.json
- Resources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/base.yml
- Content.Server/_Goobstation/StationRadio/VinylSummonRuleSystem.cs
- Resources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/sleeves.yml
- Resources/Prototypes/_Goobstation/Entities/Objects/Fun/RadioHost/vinyls.yml
- Resources/Prototypes/_Goobstation/Catalog/Cargo/cargo_service.yml
Journalism is saved!
I think i do need this. need to test it furthur.
|
It'll take me a while to resolve the copyright and convert everything to state based as its gonna require me to commit dive into Goonstation. Not going to do anything more today. |
Conflee
left a comment
There was a problem hiding this comment.
Sprites are approved, just clean up that "State based copyright" thing.
If you can't find the individual commits that added each sprite you can credit it to "From Goobstation" and then link the .dmi where they are worst case. Some older SS13 assets are so buried under bullshit after being ported between forks for 20 years and coming from archived or deleted repos that it's impossible to track.
|
Holy shit all tests passed. |
All changes made are now in one big Starlight comment (i did all the changes on moff so its fine). Each change has it's own Summary. Also fixed a bug where if the server or rig was destroyed mid broadcast, the broadcast would continue and you would not be allowed to relink a new server causing all station radios to be bricked.
|
im going to make a follow up PR that ensures https://www.youtube.com/watch?v=GmjXdCmzRbc is a disk that spawns on the radio host during AAAO rounds |
Its intended that this could be mapped into the vault to give the station/command the ability to call in a threat if there is nothing ever happening and the crew would like something to happen.
9bf2770
…rlight#5561) ## Short description Adds three milk crate storage structures with gradual fill sprites that update as the crate is filled: - **Milk Crate**: stores milk cartons (milk, soy milk, oat milk, full or empty) and nothing else. Holds 4 cartons, with a sprite state for every count from empty to full. - **Record Crate**: stores vinyl sleeves from the Radio Host equipment (ss14Starlight#5288) and nothing else. Holds 8 sleeves across 6 fill states. - **Syndicate Milk Crate**: a blood-red version of the record crate, flagged as syndicate contraband. The milk and record crates can be built from 4 plastic sheets (Storage crafting category). The syndicate crate is intentionally absent from the crafting menu but keeps its construction graph node, so it can still be deconstructed. All crates deconstruct with a screwdriver and refund their plastic. Implementation notes: - New `VinylSleeve` tag on the sleeve bases and a new `MilkCarton` tag on the milk carton entities (both marked with Starlight comments where ported/upstream files are touched) drive the storage whitelists. - Fill visuals use the same `StorageFillVisualizer` pattern as the CD rack. - All new content lives under the `_Starlight` trees; sprites are in `_Starlight/Objects/Storage/milkcrate.rsi` (17 states). ## Why we need to add this The Radio Host update (ss14Starlight#5288) added vinyl sleeves but no dedicated way to store or transport a collection. The record crate gives radio hosts tidy vinyl storage that visibly fills up, the milk crate gives service a themed carton carrier, and the syndicate variant provides flavor storage for contraband records. ## Media (Video/Screenshots) https://github.com/user-attachments/assets/f82387b3-4906-4e46-b2d9-89344bbb19d9 ## Checks <!-- check boxes for faster reviewing of your PR --> - [x] I do not require assistance to complete the PR. - [x] Before posting/requesting review of a PR, I have verified that the changes work. - [x] I have added screenshots/videos of the changes, or this PR does not change in-game mechanics. - [x] I affirm that my changes are licensed under the [MIT License](https://github.com/ss14Starlight/space-station-14/blob/Starlight/LICENSE.TXT) and grant permission for use in this repository under its conditions. **Changelog** :cl: Kamila, AegisShield - add: Added milk crates! Store your milk cartons in style, or repurpose one to file away your vinyl collection. - add: A blood-red milk crate full of unsanctioned records has been spotted in syndicate hands. Co-authored-by: KamilaTech <Claude@kamila.tech>

Short description
Mirror of my Moffstation PR porting Goobstation's Radio Host job and equipment. Since the code originates from Goobstation which is an AGPL licensed work, it is required to be relicensed to MIT. You can see screenshots of messages from JohnJohn, Rouden, loltart and H20we (jvne) giving MIT approval in the above link. Each have contributed majorly or in part to the ported code and thus each were reached out for approval which was received.
This adds Station Radio equipment consisting of...
These machines will need to eventually be incorporated into mapping along with Job spawn markers for the Radio Host. Station Radio Server, Rig, Vinyl Player and the Tape deck should ideally be mapped in a closed secure room to avoid access from random persons.
A new access was added called "Journalism" which is intended for the Radio Host and Reporter. Locking other service workers from accessing the equipment.
Appropriate Journalist Access Doors have been added for mapping.
Station Radio Receivers will need to be placed around stations and on some shuttles like the Cargo Shuttle.
A new research is added for creating circuit boards for the Server, Rig, Vinyl player and Tape Deck. The Station Radio Receiver board can be created straight from the autolathe with no research required.
A large selection of songs and ads have been added. These can be inserted into Vinyl Players to play said audio tracks.
Vinyls and CDs have a chance to spawn in Maintenance. You can also purchase a crate of Vinyls or ADs through cargo.
Syndicate Agents can purchase a new Disruptive CD called Numbers. Which when inserted into a Vinyl player and broadcasted across station, it will summon a random threat upon completion. The Vinyl player must be connected to a Station Rig which must also be connected to a server in order for the CD to work.
Nukies can find a collection of joke CDs from their uplinks.
Current Issues
I am having issues with getting Journalist access to appear in ID computers.No way to test to see how TTS will work with this. If they broadcast over the radio or not.
Unsure if there are enough mapping assets included (doors, etc). I don't know mapping so I don't know what else might be required.Whatever the rabbit thinks of the code.Why we need to add this
The Radio Host is a person whose whole purpose is to maintain and run the Station's radio. Playing songs, advertisements as well as hosting interviews live on air.
A fun service role which adds variety to the game. Plus more things to do on high pop.
Test plan
Load Branch
Add Testing YAML from below.
Testing Radio Host Equipment
Testing Acquiring Radio Host Gear
Testing Numbers CD calling in Threat.
Threat Table Chances for Numbers CD
Media (Video/Screenshots)
FULL DEMONSTATION HERE
https://youtu.be/4D5zqJWV-IY
Checks
Changelog
🆑 JohnJJohn, Rouden, H20we, loltart