Skip to content

Conversation

@Quantum-cross
Copy link
Contributor

@Quantum-cross Quantum-cross commented Jul 27, 2025

About the PR

NOTE: THIS DEPENDS ON #39217 AND #37689

This is part 2 of my turnstile improvements.

This PR introduces the ability to pry and bypass turnstiles, in a similar way to airlocks -- but still quite different.

A "SOLN" (solenoid) wire has been added to the wires panel. When this is pulsed or cut, a user can use a crowbar to bypass the turnstile. After the DoAfter, the user who bypassed the turnstile has 3 seconds to enter the turnstile. If they do not enter the turnstile within 3 seconds of DoAfter completion, they will receive a popup informing them that the turnstile mechanism snaps back and they can no longer enter the turnstile.

This works from any direction, but it takes twice as long to bypass the turnstile from the incorrect direction.

Jaws of life (powered pry) can always bypass a turnstile with the same time penalty as prying a powered airlock. The penalty is also multiplied by two for prying from the wrong direction.

Other entities can still be pulled through a bypassed turnstile if they are pulled by the user who bypassed it, but now the method of "entry" into the turnstile is saved in the turnstile system so more fine grained tuning can be done later.

Thought for later: Perhaps we want to allow "train" chain pulling if the original puller has actual ID access, but maybe we only want a prying user to pull a single entity through and not allow chaining.

Why / Balance

When #39217 gets added, there should be another interesting way to bypass a turnstile without complete destruction. In emergencies, a fully tooled engineer should be able to help people through a turnstile. I think that the method of only allowing the user who completes the pry DoAfter is unique and interesting enough to capture the spirit of turnstiles.

Technical details

When a pry is completed, it will add the pryer to a hashset of UIDs. An update loop will remove exceptions that have expired.
CollideExceptions has been changed to a dictionary that also stores an EntranceMethod enum so we can use that information for later balance tweaks.

Media

Will upload later closer to prerequisite PRs being merged.

Requirements

Breaking changes

Only really stuff internal to the turnstile system.

Changelog
🆑

  • add: Turnstiles can now by bypassed by hacking the SOLN wire and using a pry tool, or jaws of life.

…e, not just a locstring.

Take the random default BaseTime out of the GetPryTimeModifierEvent, this default was never used.

BaseTime is set at construction of the event from PryableComponent instead of an event on PryableComponent.

Use `Entity<T>` for OnDoorAltVerb, OnDoAfter

Use `Resolve` on nullable component arguments in public functions. Use `Entity<T>` pattern in private functions

Add some comments and change some variable names in `PryingSystem for clarity.`
fix high sec door not being pryable

fix blast door being pryable
- split the spinner and indicator lights into different sprite layers
- add an indicator on the left side and add bolted sprite
- add wire panel to turnstile, allow electrification, bolting, ai access
- add power reciever, turnstile will act as if bolted when unpowered
- turnstiles can log access as well and be door probed
…trified grille.

add TurnstileGenpop wire layout so it's different from constructed ones

add WiresPanelSecurity component for examines

add medium security turnstile with steel panel

add medium security shocked turnstile with steel panel and electric grille
…pen, pry closed, powered, unpowered, welded, unwelded, hand pry, crowbar, jaws of life.
Add ability to pry turnstiles while solenoid is bypassed
@PJBot PJBot added S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. Changes: Sprites Changes: Might require knowledge of spriting or visual design. labels Jul 27, 2025
@github-actions github-actions bot added the size/M Denotes a PR that changes 100-999 lines. label Jul 27, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Jul 27, 2025

RSI Diff Bot; head commit d61cb46 merging into 45cef10
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Structures/Doors/turnstile.rsi

State Old New Status
deny Modified
operate Modified
turnstile Modified
turnstile_map Modified
assembly Added
bolted Added
granted Added
panel_open Added
turnstile_idle Added
wired Added

Edit: diff updated after d61cb46

@Killerqu00 Killerqu00 added P2: Raised Priority: Item has a raised priority, indicating it might get increased maintainer attention. A: Security Area: Security department, including Detectives, HoS S: Needs Content PR Merged Status: Requires an existing SS14 PR to be merged first. S: Draft Status: This is a draft and might need to be retriaged upon opening. T: New Feature Type: New feature or content, or extending existing content and removed S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. labels Jul 28, 2025
@arenaconspiracy
Copy link

Thank you.

@github-actions
Copy link
Contributor

github-actions bot commented Sep 7, 2025

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Sep 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A: Security Area: Security department, including Detectives, HoS Changes: Sprites Changes: Might require knowledge of spriting or visual design. P2: Raised Priority: Item has a raised priority, indicating it might get increased maintainer attention. S: Draft Status: This is a draft and might need to be retriaged upon opening. S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted S: Needs Content PR Merged Status: Requires an existing SS14 PR to be merged first. S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. size/M Denotes a PR that changes 100-999 lines. 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.

4 participants