space-station-14 icon indicating copy to clipboard operation
space-station-14 copied to clipboard

Create DeviceNetworkJammerComponent & System as a general way for entities to act as jammers

Open nikthechampiongr opened this issue 11 months ago • 0 comments

About the 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.

Why / 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

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

  • [x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

no cl no fun

nikthechampiongr avatar Mar 22 '24 19:03 nikthechampiongr