Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Seperate EMAG into EMAG and Authentication Disruptor #34337

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

ScarKy0
Copy link
Contributor

@ScarKy0 ScarKy0 commented Jan 9, 2025

About the PR

Title. The popular emag was seperated into the regular cryptographic sequencer and authentication disruptor.
The Emag retains its original purpose of adding hidden functions to machines (gibbing recycler, locking cryopods etc) but loses the ability to break locks and airlocks.
The Authentication Disruptor has the ability to break locks and airlocks while also removing their access. Unlike the old emag, this is not permanent and can be fixed by unbolting the airlock and restoring access with the access config.

This PR also contains #34330 in it, which I needed for testing. Please merge that one first so I can fix the inevitable merge conflict.

Why / Balance

The emag was always controversial due to the sheer feature bloat it had. It basically became an always-buy syndie item, which not only lets you break into places but also gives you plenty utility with other machines.
Due to all of that, emag uses were frozen as to not make it even more powerful. This PR aims to seperate the powerful airlock/lock breaking ability into a seperate item to ease the burden on the poor emag, turning it into more of an item for niche uses that it could already do anyways.

This PR, if maintainers decide so, may allow emag features to be unfrozen, allowing to add even more silly or strong interactions to it.

Technical details

Added a new AccessBreakerSystem and seperated the emag code responsible for breaking locks and access to it.
Added a new OnAccessOverriderAccessUpdatedEvent (god...) that is raised on an entity when it's AccessReader is updated by the access configurator.
Changed Vending machines to not use the EmagComponent as means of the access being broken anymore.
Made Ninja Gloves use AccessBreakerProviderComponent instead of EmagProviderComponent.

Media

2025-01-09.21-34-48.mp4

TODO

  • Fix ninja gloves
  • Add to thief kit, syndie borg
  • Cleanup
  • Sprite

Requirements

Breaking changes

Renamed BreakOnEmag functions in AccessReader and Lock to BreakOnAccessBreaker.
Changed Space Ninja EmagProviderComponent to AccessBreakerProviderComponent.

Changelog

🆑

  • add: Added the Authentication Disruptor to the syndicate uplink for 5TC. It removes access requirements from devices and forcefully opens airlocks and digital locks.
  • tweak: The EMAG can no longer open airlocks or break locks.
  • tweak: Price of the EMAG lowered to 4TC.
  • tweak: "Emagged" airlocks can now be fixed by unbolting and using the access configurator. Locks and similiar can now be fixed by just using the access configurator.

@github-actions github-actions bot added S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. size/M Denotes a PR that changes 100-999 lines. labels Jan 9, 2025
@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 9, 2025

If anyone plans to test just know like half of the changelog still isnt implemented :godo:

@beck-thompson
Copy link
Contributor

This is done in Delta-V and it works out fine

@EthanQix
Copy link

EthanQix commented Jan 9, 2025

Good, Emag does too much stuff at the moment.

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 9, 2025

this might also allow for the emag to be unfrozen so we cna get more cool interactions

@SlimmSlamm
Copy link
Contributor

why is this a needed change? the emag is fine as it is right now

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 9, 2025

why is this a needed change? the emag is fine as it is right now

The emag does WAYY too much for a single item. It was requested several times to seperate it into several items (like how tgstation has it)
I believe a normal person won't need both functions anyways unless you're doing something niche
Also this might allow an emag unfreeze so we can get more interactions for it

@ArtisticRoomba
Copy link
Contributor

why is this a needed change? the emag is fine as it is right now

It isn't. The EMAG has a hilarious amount of interactions and as such new EMAG interactions are frozen for this exact reason.

Did you know you can EMAG a fire alarm? I didn't know you could until I wrote my guidebook entry on it, and let me tell you I hate that fact so much.

@SlimmSlamm
Copy link
Contributor

It isn't. The EMAG has a hilarious amount of interactions and as such new EMAG interactions are frozen for this exact reason.

You increase the price of it not completely ruin it. This PR is awful. Most of the interactions don't even do anything besides give you clothes or drinks. It's main purpose is emagging doors and the recycler. I rarely ever see it used for anything else and this entire PR is changing something completely uneeded soley because of useless interactions.

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 9, 2025

You increase the price of it not completely ruin it. This PR is awful. Most of the interactions don't even do anything besides give you clothes or drinks. It's main purpose is emagging doors and the recycler. I rarely ever see it used for anything else and this entire PR is changing something completely uneeded soley because of useless interactions.

I dunno the emag has a lot of great interactions... You know... Borgs, jamming cryopods, making people rot 10x faster on cryo beds, the recycler, syndie contra in a lot of vending machines (especially cigs machine), printing weapons on lathes
And after this PR makes it, if the maintainers agree, we can add even more to make the emag even better

@EthanQix
Copy link

EthanQix commented Jan 9, 2025

why is this a needed change? the emag is fine as it is right now

The Emag does so much stuff as one item that adding more interactions has been frozen. It's a swiss knife that needs to be split to give it some design space.

@SlimmSlamm
Copy link
Contributor

You increase the price of it not completely ruin it. This PR is awful. Most of the interactions don't even do anything besides give you clothes or drinks. It's main purpose is emagging doors and the recycler. I rarely ever see it used for anything else and this entire PR is changing something completely uneeded soley because of useless interactions.

I dunno the emag has a lot of great interactions... You know... Borgs, jamming cryopods, making people rot 10x faster on cryo beds, the recycler, syndie contra in a lot of vending machines (especially cigs machine), printing weapons on lathes And after this PR makes it, if the maintainers agree, we can add even more to make the emag even better

I dunno man. for 3 tc I can just get a jaws of life and do what this PR is proposing 10x better and cheaper without leaving a single trace.

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 9, 2025

I dunno man. for 3 tc I can just get a jaws of life and do what this PR is proposing 10x better and cheaper without leaving a single trace.

If you have the time to wait for jaws while wanting to break into bridge, go for it champ :godo:

@ArtisticRoomba
Copy link
Contributor

I dunno man. for 3 tc I can just get a jaws of life and do what this PR is proposing 10x better and cheaper without leaving a single trace.

Then do that. That's called player agency. If you want to wait a while exposing yourself to save some TC, then do that.

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 9, 2025

Code complete
Just need an art director to approve of the sprite i sent on the discord (before i animate it)

@EthanQix
Copy link

EthanQix commented Jan 9, 2025

Code complete Just need an art director to approve of the sprite i sent on the discord (before i animate it)

You might want to fill the "why/balance" and "technical details" parts of the PR while you're waiting ;)

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 9, 2025

You might want to fill the "why/balance" and "technical details" parts of the PR while you're waiting ;)

Lazy :(
Ill consider

@Luxzhv
Copy link

Luxzhv commented Jan 9, 2025

I can only imagine that this will lead to more baseforks aswell, because of folks being so set in their ways about the Emag.

@ScarKy0 ScarKy0 marked this pull request as ready for review January 9, 2025 23:18
@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 9, 2025

Marking as ready for review if a maintainer wants to review it. I still need the sprite before it can be merged tho

@ScarKy0 ScarKy0 added P1: High Priority: Higher priority than other items, but isn't an emergency. T: New Feature Type: New feature or content, or extending existing content T: Cleanup Type: Code clean-up, without being a full refactor or feature D2: Medium Difficulty: A good amount of codebase knowledge required. and removed S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. labels Jan 9, 2025
@ScarKy0 ScarKy0 added S: Needs Review Status: Requires additional reviews before being fully accepted T: Balance Change Type: Balance changes through direct value changes, or changes to mechanics that affect it A: Roundflow/Antag Area: Roundflow - "What happens in the game", including antagonist roles and their capabilities S: Needs Content PR Merged Status: Requires an existing SS14 PR to be merged first. labels Jan 9, 2025
@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 10, 2025

Will have to clean up code tmrw

@deltanedas
Copy link
Contributor

this shouldnt have any code changes, just use whitelist and blacklist

@Hrosts
Copy link
Contributor

Hrosts commented Jan 10, 2025

I dunno man. for 3 tc I can just get a jaws of life and do what this PR is proposing 10x better and cheaper without leaving a single trace.

You can't open lockers with jaws, you can with an AD. It allows you to do a complete break-in-an-steal-from-locker sequence, like EMAG currently does, but without all the additional tasty stuff like making disposals evil.

The Emag retains its original purpose of adding hidden functions to machines (gibbing recycler, locking cryopods etc) but loses the ability to break locks and airlocks.

Where does the cargo console fit into this? Currently EMAG breaks the access on it, but also disables radio reporting IIRC.

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 10, 2025

Where does the cargo console fit into this? Currently EMAG breaks the access on it, but also disables radio reporting IIRC.

Emag breaks radio report
AD makes it need no access

At least this should be the case, testing later :godo:

@FairlySadPanda
Copy link
Contributor

During #34004 I've found a lot of instances of "emagged" being used as a state on doors. It makes no sense for the "emag" item to not cause the emagged state on doors. As such I'll need to iterate on #34004 to rename instances to, like, "Hacked" or something? I think "emagged doors" is more of a SS14-ism atm.

@FairlySadPanda
Copy link
Contributor

Wait, this already touches door code. :hampter:

@deltanedas
Copy link
Contributor

again this shouldnt touch any code (besides adding blacklist support for emag) and should just be yml for whitelist/blacklisting things

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 10, 2025

again this shouldnt touch any code (besides adding blacklist support for emag) and should just be yml for whitelist/blacklisting things

If it was like this if something had both an emag interaction and an AD interaction youd only be able to do one of them. Unless emag raised 2 different events for each use which just feels like a mess.
I wonna try to stick to this until a maint tells me to somehow stuff it into a single event

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 10, 2025

During 34004 I've found a lot of instances of "emagged" being used as a state on doors. It makes no sense for the "emag" item to not cause the emagged state on doors. As such I'll need to iterate on 34004 to rename instances to, like, "Hacked" or something? I think "emagged doors" is more of a SS14-ism atm.

Ill rename them when i got a second

@LaCumbiaDelCoronavirus
Copy link

how will this affect nukies & such?

@ScarKy0 ScarKy0 removed the S: Needs Content PR Merged Status: Requires an existing SS14 PR to be merged first. label Jan 10, 2025
@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 10, 2025

how will this affect nukies & such?

Syndie Borg has both in their operative module
Thief gets both
Ninja works same way except the doors are now easier to fix
Nukies will have to buy both, but realistically have you ever seen a nukie do a non-airlock emag on anything but a lathe

Any balance to thief or syndie borg losing these abilities is probably not in scope of this PR, but i dunno

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 10, 2025

During 34004 I've found a lot of instances of "emagged" being used as a state on doors. It makes no sense for the "emag" item to not cause the emagged state on doors. As such I'll need to iterate on 34004 to rename instances to, like, "Hacked" or something? I think "emagged doors" is more of a SS14-ism atm.

Came to a conclusion to not rename the Emagging state in this PR cause

  1. Its a mess
  2. Will prob cause issues downstream
  3. "Hacking" is a totally seperate thing, so would need a better state name i feel

@august-sun
Copy link
Contributor

Talked about this with Scar in Discord already, but worth stating here because it affects the dynamic: It's possible to have both the emag and the AD give door-breaking capabilities, just making one obviously more capable than the other. There's more that needs to go into it, particularly with the emag's interactions with devices. I think a lot of folks here aren't happy with how emag interactions are implemented currently, so just a matter of getting those vetted and sorted to a place that makes them strong enough to warrant the use of an emag. I see potential, though, would like to see what's determined.

@slarticodefast slarticodefast added the S: Undergoing Maintainer Discussion Status: Currently going through an extended discussion amongst maintainers, as per procedure. label Jan 10, 2025
@Pumkin69
Copy link

this is a good PR and makes logical sense. Even if you want the "old emag" back you just spend 1 extra TC and carry both around.

@LaCumbiaDelCoronavirus
Copy link

Ninja works same way except the doors are now easier to fix

Could you elaborate how doors emagged by ninjas are fixed now? unless there's a design doc or something to look at that talks about this

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 11, 2025

Could you elaborate how doors emagged by ninjas are fixed now? unless there's a design doc or something to look at that talks about this

it applies to both ninjas and emags
basically:
before this PR, emags would mark AccessReaders as disabled, which is why they made doors AA
However, since theyre disabled, the access configurator wasnt able to actually fix the access, so the only way to repair an emagged door was to deconstruct and reconstruct it and THEN use the access configurator

Now, this PR instead of marking the AccessReader as disabled instead clears the access list, making the door need no access to open but still be fixable with the access configurator

@K-Dynamic
Copy link
Contributor

However, since theyre disabled, the access configurator wasnt able to actually fix the access, so the only way to repair an emagged door was to deconstruct and reconstruct it and THEN use the access configurator

I should note it's possible to repair a door without an access config, as you can set accesses on a door electronic via multitool.

However I'd rather not have to do that over 10 times over a shift.

@ScarKy0
Copy link
Contributor Author

ScarKy0 commented Jan 12, 2025

I should note it's possible to repair a door without an access config, as you can set accesses on a door electronic via multitool.

I know, but you dont have to deconstruct doors at all now (if this gets merged)

@Stop-Signs
Copy link

We did this on DV and its worked out very well. It not only lets syndies get more out of their budget but also lets us give antags either a doorjack or lockbreaker, but not both.

@Hrosts
Copy link
Contributor

Hrosts commented Jan 14, 2025

We did this on DV and its worked out very well. It not only lets syndies get more out of their budget but also lets us give antags either a doorjack or lockbreaker, but not both.

This one is different. The Auth Disruptor is both a doorjack and a lockbreaker, a universal "open this thing" tool, with EMAG being relegated to the subversion functions for borgs, recyclers, vending machines, etc. Frankly I like this more than the DV solution, as yours kinda defeats the point of separating them if I still need to buy both for many break-in tasks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A: Roundflow/Antag Area: Roundflow - "What happens in the game", including antagonist roles and their capabilities D2: Medium Difficulty: A good amount of codebase knowledge required. P1: High Priority: Higher priority than other items, but isn't an emergency. S: Needs Review Status: Requires additional reviews before being fully accepted S: Undergoing Maintainer Discussion Status: Currently going through an extended discussion amongst maintainers, as per procedure. size/M Denotes a PR that changes 100-999 lines. T: Balance Change Type: Balance changes through direct value changes, or changes to mechanics that affect it T: Cleanup Type: Code clean-up, without being a full refactor or feature T: New Feature Type: New feature or content, or extending existing content
Projects
None yet
Development

Successfully merging this pull request may close these issues.