-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
base: master
Are you sure you want to change the base?
Conversation
If anyone plans to test just know like half of the changelog still isnt implemented :godo: |
This is done in Delta-V and it works out fine |
Good, Emag does too much stuff at the moment. |
this might also allow for the emag to be unfrozen so we cna get more cool interactions |
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) |
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. |
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 |
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. |
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: |
Then do that. That's called player agency. If you want to wait a while exposing yourself to save some TC, then do that. |
Code complete |
You might want to fill the "why/balance" and "technical details" parts of the PR while you're waiting ;) |
Lazy :( |
I can only imagine that this will lead to more baseforks aswell, because of folks being so set in their ways about the Emag. |
Marking as ready for review if a maintainer wants to review it. I still need the sprite before it can be merged tho |
Will have to clean up code tmrw |
this shouldnt have any code changes, just use whitelist and blacklist |
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.
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 At least this should be the case, testing later :godo: |
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. |
Wait, this already touches door code. :hampter: |
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. |
Ill rename them when i got a second |
how will this affect nukies & such? |
Syndie Borg has both in their operative module Any balance to thief or syndie borg losing these abilities is probably not in scope of this PR, but i dunno |
Came to a conclusion to not rename the Emagging state in this PR cause
|
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. |
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. |
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 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 |
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. |
I know, but you dont have to deconstruct doors at all now (if this gets merged) |
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. |
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
Requirements
Breaking changes
Renamed BreakOnEmag functions in AccessReader and Lock to BreakOnAccessBreaker.
Changed Space Ninja EmagProviderComponent to AccessBreakerProviderComponent.
Changelog
🆑