Skip to content

Conversation

@Quantum-cross
Copy link
Contributor

About the PR

NOTE: THIS DEPENDS ON #37689

I've taken most of the code from SharedDoorSystem.Bolts and put it into a SharedBoltSystem.

This should pave the way to allowing door bolts or bolt-like attributes to other entities like turnstiles.

There's also a new datafield that is currently unused but will be used for turnstiles BoltsRequirePower.
Setting this to false will allow bolts to actuate and the bolt indicators to show without the entity being powered.

Why / Balance

Code refactor, atomizing PRs leading to full implementation of #37350.

Technical details

It should hopefully be relatively obvious what I pull out of DoorSystem.Bolts and how it fits together.

I've also added a PassagewayAccessRequest event to remove hardcoded component dependencies such as AirlockComponent for emergency access mode and FirelockComponent for firelock access. This event is raised in SharedDoorSystem.HasAccess.

Media

No media

Requirements

Breaking changes

All functions from SharedDoorSystem.Bolts and been moved into SharedBoltSystem

SharedDoorSystem.HasAccess no longer takes DoorComponent argument.

SetBoltsDown has been removed, just use TrySetBoltsDown and ignore the return.

…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
…em.cs`

- Change `DoorRemoteSystem` to work with `DoorBoltComponent` directly, without required a `DoorComponent`
- Remove requirement for `DoorComponent` from `SharedDoorSystem.HasAccess(...)` making it a target for future access checking refactor
- Add a flag to `DoorBoltComponent` to allow bolts and the bolt indicator to work without being powered (for future turnstile work)
- Add a `BeforeBoltEvent` to allow cancellation of bolting besides power (for future turnstile work)
- Add a `PassagewayAccessRequest` event to check for oddball access overrides like on firelocks and emergency access doors
- Remove `SetBoltsDown` because it's literally just `TrySetBoltsDown` without a return value
- Generalize some localizations to use the entity's name
…pen, pry closed, powered, unpowered, welded, unwelded, hand pry, crowbar, jaws of life.
@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. 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
@VerinSenpai VerinSenpai added D1: High Difficulty: Extensive codebase knowledge required. A: Core Tech Area: Underlying core tech for the game and the Github repository. A: General Interactions Area: General in-game interactions that don't relate to another area. S: Draft Status: This is a draft and might need to be retriaged upon opening. T: Refactor Type: Refactor of notable amount of codebase P1: High Priority: Higher priority than other items, but isn't an emergency. and removed S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. labels Aug 4, 2025
@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
@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A: Core Tech Area: Underlying core tech for the game and the Github repository. A: General Interactions Area: General in-game interactions that don't relate to another area. D1: High Difficulty: Extensive codebase knowledge required. P1: High Priority: Higher priority than other items, but isn't an emergency. 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 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: Refactor Type: Refactor of notable amount of codebase

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants