## Mirror of PR #26342: [Create DeviceNetworkJammerComponent & System as
a general way for entities to act as
jammers](https://github.com/space-wizards/space-station-14/pull/26342)
from <img src="https://avatars.githubusercontent.com/u/10567778?v=4"
alt="space-wizards" width="22"/>
[space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14)
###### `266cc85f57c883b3a604a66da91d94bb1e18ec5d`
PR opened by <img
src="https://avatars.githubusercontent.com/u/32041239?v=4"
width="16"/><a href="https://github.com/nikthechampiongr">
nikthechampiongr</a> at 2024-03-22 19:17:23 UTC
---
PR changed 7 files with 91 additions and 25 deletions.
The PR had the following labels:
- Status: Needs Review
---
<details open="true"><summary><h1>Original Body</h1></summary>
> <!-- Please read these guidelines before opening your PR:
https://docs.spacestation14.io/en/getting-started/pr-guideline -->
> <!-- The text between the arrows are comments - they will not be
visible on your PR. -->
>
> ## About the PR
> <!-- What did you change in this PR? -->
> This PR creates the DeviceNetworkJammerComponent & System as a general
way for entities to act as jammers for the DeviceNetwork.
>
> Additionally it adjusts the JammerSystem for the radio jammer to use
this, and rips out the previous special code for jamming suit sensors.
>
> As a result of this, the radio jammer can now additionally jam the
suit sensor server itself from receiving DeviceNetwork packets.
>
> ## Why / Balance
> <!-- Why was it changed? Link any discussions or issues here. Please
discuss how this would affect game balance. -->
> This pr was requested by a maintainer.
>
> Additionally a general jamming system can have some utility in the
future. E.g. an artifact effect.
> ## Technical details
> <!-- If this is a code change, summarize at high level how your new
code works. This makes it easier to review. -->
>
> Whenever a device attempts to send a packet, the
> DeviceNetworkJammerSystem listens for the BeforePacketSentEvent.
> From there if any entity with the jammer component is within range of
> either the sender or receiver of the packet the event will be
cancelled.
> Additionally jammers can only block packets in certain networks. If a
> packet is not being transmitted in one of the networks it can block
then
> even if the jammer is in range the event will not be cancelled.
>
> The range is stored in the jammer component along with the networks it
> can jam.
>
> Jammable network ids are stored as strings which seems to be how
custom
> networks are stored (E.g. network ids for suit sensors).
>
> To allow for all of this, the BeforePacketSentEvent was modified to
> provide the NetworkId.
>
> The JammerSystem now needs to get the networkid for suit sensors for
use in the DeviceNetwork. The previous event subscription for jamming
suit sensors have been removed along with the event.
>
> I wish I could use this to jam radios as well but radios are magic and
do not use device networks.
>
> ## Media
> <!--
> PRs which make ingame changes (adding clothing, items, new features,
etc) are required to have media attached that showcase the changes.
> Small fixes/refactors are exempt.
> Any media may be used in SS14 progress reports, with clear credit
given.
>
> If you're unsure whether your PR will require media, ask a maintainer.
>
> Check the box below to confirm that you have in fact seen this (put an
X in the brackets, like [X]):
> -->
>
> - [x] I have added screenshots/videos to this PR showcasing its
changes ingame, **or** this PR does not require an ingame showcase
>
> **Changelog**
> <!--
> Make players aware of new features and changes that could affect how
they play the game by adding a Changelog entry. Please read the
Changelog guidelines located at:
https://docs.spacestation14.io/en/getting-started/pr-guideline#changelog
> -->
>
> <!--
> Make sure to take this Changelog template out of the comment block in
order for it to show up.
> 🆑
> - add: Added fun!
> - remove: Removed fun!
> - tweak: Changed fun!
> - fix: Fixed fun!
> -->
> no cl no fun
</details>
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: SimpleStation14 <Unknown>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
## Mirror of PR #26216: [Unify `Content`'s `EntitySystem`
logging](https://github.com/space-wizards/space-station-14/pull/26216)
from <img src="https://avatars.githubusercontent.com/u/10567778?v=4"
alt="space-wizards" width="22"/>
[space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14)
###### `eeaea6c25b496106eb741e93738f2ab8503949ba`
PR opened by <img
src="https://avatars.githubusercontent.com/u/27449516?v=4"
width="16"/><a href="https://github.com/LordCarve"> LordCarve</a> at
2024-03-17 20:05:08 UTC
---
PR changed 13 files with 43 additions and 82 deletions.
The PR had the following labels:
- Status: Needs Review
---
<details open="true"><summary><h1>Original Body</h1></summary>
> <!-- Please read these guidelines before opening your PR:
https://docs.spacestation14.io/en/getting-started/pr-guideline -->
> <!-- The text between the arrows are comments - they will not be
visible on your PR. -->
>
> ## About the PR
> <!-- What did you change in this PR? -->
> Log things via `Log` with generated sawmill name rather than an
explicitly set one for all Content `EntitySystem`s, except the ones with
`Rule`s. In all cases the explicit `_sawmill` was redundant.
>
> ## Why / Balance
> <!-- Why was it changed? Link any discussions or issues here. Please
discuss how this would affect game balance. -->
> - Bringing consistency to logs (all logs originating from
`EntitySystem` should be recognizible in the logs `system.something`).
> - Logs' sawmills match system class name to assist with debugging.
> - Less likelihood of someone building a new `EntitySystem` to
copy-paste the unnecessary `_sawmill` and instaed use the appropriate
inherited `Log` instead.
>
> ## Technical details
> <!-- If this is a code change, summarize at high level how your new
code works. This makes it easier to review. -->
> This addresses **_just_** `Content`'s `EntitySystem`s.
>
> `GameRuleSystem` **and all classes inheriting from it are excluded.**
I want to include both the calling system name and the rule name in the
sawmill name - this however requires engine changes. I thus opted to cut
out that part and made this a `Content`-only PR.
>
> Also, even with the rule changes, the `GameRule`s themselves will be
excluded pending antag refactor, because currently they are a _hot-hot_
mess and I'm sure it's preferable by everyone for me to wait for it to
cool down before introducing merge conflicts unnecessarily.
>
> Log Sawmill changes:
> **System class | current master sawmill | this PR's sawmill**
> `VaporSystem.cs`: `vapor` -> `system.vapor`
> `DeviceListSystem.cs`: `devicelist` -> `system.device_list`
> `ForensicScannerSystem.cs`: `forensic.scanner` ->
`system.forensic_scanner`
> `MappingSystem.cs`: `autosave` -> `system.mapping`
> `MechSystem.cs`: `mech` -> `system.mech`
> `LagCompensationSystem.cs`: `lagcomp` -> `system.lag_compensation`
> `NpcFactionSystem.cs`: `faction` -> `system.npc_faction`
> `EmergencyShuttleSystem.cs`: `shuttle.emergency` ->
`system.emergency_shuttle`
> `EventManagerSystem.cs`: `events` -> `system.event_manager`
> `VendingMachineSystem.cs`: `vending` -> `system.vending_machine`
> `SharedAnomalySystem.cs`: `anomaly` -> `system.anomaly`
> `SharedDeviceLinkSystem.cs`: `devicelink` -> `system.device_link`
> `ThirstSystem.cs`: `thirst` -> `system.thirst`
>
> Manually tested most (all that I had doubts about) and confirmed that
`LagCompensationSystem`'s `Log.Level` is getting correctly set like
this.
>
> ## Media
> <!--
> PRs which make ingame changes (adding clothing, items, new features,
etc) are required to have media attached that showcase the changes.
> Small fixes/refactors are exempt.
> Any media may be used in SS14 progress reports, with clear credit
given.
>
> If you're unsure whether your PR will require media, ask a maintainer.
>
> Check the box below to confirm that you have in fact seen this (put an
X in the brackets, like [X]):
> -->
>
> - [X] I have added screenshots/videos to this PR showcasing its
changes ingame, **or** this PR does not require an ingame showcase
>
> ## Breaking changes
> <!--
> List any breaking changes, including namespace, public
class/method/field changes, prototype renames; and provide instructions
for fixing them. This will be pasted in #codebase-changes.
> -->
> Log sawmill name changes. Any analyzers/other software that processes
logs needs to be adjusted to new sawmills. Full list of changes in PR -
section Technical details.
</details>
Co-authored-by: SimpleStation14 <Unknown>
* Predict two-way levers
Annoys me the rare occasions I touch cargo. Doesn't predict the signal but at least the lever responds immediately.
* space
* a
(cherry picked from commit 05a2ddff1cc415c3bdf1e15ef3a2c953bcb5384b)
* Fix ActivatableUIRequiresPowerCellComponent stopping power draw when one of two people closes the UI.
Also fixes it to check UiKey properly.
* Remove unnecessary CrewManifestViewer on PDAs
This is for a pop-up crew manifest UI, which the PDA doesn't use.
* Fix BoundUIClosedEvents that didn't check UI key/not correctly at least.
Uses the new helper method in engine.
* Fix drone (cargo shuttle) pilot console UI breaking if two people open it and one person closes it.
* Fixes for disposal router/tagger UI.
Code was badly copy pasted without changing identifiers, never worked.
Also cleaned up some of the logic (text trimming, sounds).
Also removed the "refuse to work if you have something in your active hand" check like why.
* Avoid running most ActivatableUIComponent logic when closing a UI via toggle
Activating the UI while it's already open closes it via toggle. Except it still ran 99% of the "attempting to open" logic which makes no sense.
This probably fixes a bug or some other dumb behavior somewhere.
* Bitch
(cherry picked from commit 123a4147dea2945f6c60fe9e4e0a3aa2da75e1dc)
* Implement device network device shutdown subscribtion
Implement removing devices from device lists when they get deleted
* Improve name and doc comment for DeviceShutDownEvent
* Change ShutdownSubscriber data field tag
* Change UpdateRemovalSubscription name to UpdateShutdownSubscription
* Implement NetProbeCartridge
* Add audio and a popup when scanning a device
Add some doc comments
* Set program icon
* Add NetProbe cartridge as rare loot to maintenance loot tool spawner
* Make the maximum amount of saved entries configurable
Add a scrollbar that shows when there are more entries than fit on the screen
* Make device net id names translatable
* shuffles devicelist to shared, adds an overlay for devicelist
* adds space property to overlay
* moves networkconfigurator to shared, makes devicelistsystem clientside check activedevicelist
* dirties components upon change, adds networkedcomponent to sharednetworkconfigurator
* state handlers for networked components
* whoops
* lots of shuffling, renaming, and access changes
* randomizes color for every new entity added to the overlay
* adds a client-side action to clear all network overlays if they're active
* clones action (oops)
* localization, adds a command for clearing network link overlays (in case the action disappears)
* moves the entity manager up into the bui fields
* makes that a dependency
* attempts to just directly get the color from the dict when drawing, now
* fixes up a few comments
* adds dirty on init to devicelistcomponent
* hacky solution related to mapping with a networkconfigurator
* more stricter bound on that hacky solution
* just checks if the life stage is initialized instead of if the entity was initialized
* moves getalldevices to shared
* readds linq import
* tries to ensure that the show button is toggled on if the device we're trying to configure is currently being tracked by the overlay
* some reorganization