Skip to content

Conversation

@Quantum-cross
Copy link
Contributor

@Quantum-cross Quantum-cross commented May 21, 2025

About the PR

I want turnstiles to exhibit unique behavior on prying with a tool, and instead of bringing TurnstileComponent into PryingSystem, I saw the light yesterday and am doing the reverse.

I remove common prying datafields from DoorComponent and bring them into a new component PryableComponent. The CanPry datafield is removed and replaced by the existence of PryableComponent on an entity.

All of the PryingSystem events are largely unchanged:

PryingSystem will continue to raise BeforePryEvent to query the entity if prying is allowed or not given the properties of the tool, the state of the user, and the state of the entity.

PryingSystem will continue to raise GetPryTimeModifierEvent to query the entity if the time it takes to pry will be modified due to the state of the user or the state of the entity.

PryingSystem will continue to raise PriedEvent to notify that a pry DoAfter has been completed from a given user.


All the weird pry tool flags are now just PryStrength. I can't imagine a tool that can pry a bolted door but not a powered door, so it's just a scale.

The prying door tests have been generalized and every combination is tested.

Why / Balance

Clean up, refactor, allow cleaner integration of planned features in #37350.

Technical details

See About section, not much more complicated than that.

Basically just lets me slap PryableComponent on something like turnstiles and add in unique checks for if it can be pried and unique time modifiers without having to duplicate checks for DoorComponent with TurnstileComponent

Media

none

Requirements

Breaking changes

The following properties have been remove from DoorComponent:

  • CanPry
  • PryingQuality
  • PryTime

PryableComponent has been added with PryingQuality and PryTime.

CanPry has been "replaced" with the existence of PryableComponent on an entity.

Prototypes with CanPry: False should have that datafield removed.

PryableComponent has been added to:

  • Airlock
  • BaseFirelock
  • BaseShutter
  • BaseWindoor
  • HighSecDoor

Abstract prototype BaseShutterPryable is parented from BaseShutter, all shutters are parented to BaseShutterPryable except BlastDoor which shouldn't be pryable.

Handlers of BeforePryEvent should put a fully localized message in the Message field instead of just the loc-string as before.

GetPryTimeModifierEvent requires the base pry time as an argument. Normally this will be the PryTime field of the PryableComponent

PryingComponent no longer has:

  • PryPowered
  • Force

PryingComponent now has:

  • enum PryStrength Strength

Which can take on the values:

  • Weak
  • Strong
  • Powered
  • Force

Prototypes with PryingComponent have been changed appropriately.

…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
@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 May 21, 2025
Copy link
Contributor

@EmoGarbage404 EmoGarbage404 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

every day ToolSystem creeps closer to death

@EmoGarbage404 EmoGarbage404 added the S: Awaiting Changes Status: Changes are required before another review can happen label May 21, 2025
@github-actions github-actions bot added S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. and removed S: Awaiting Changes Status: Changes are required before another review can happen labels May 21, 2025
@Quantum-cross Quantum-cross marked this pull request as draft May 22, 2025 13:40
@Quantum-cross
Copy link
Contributor Author

Drafting this a moment -- checking something

@Quantum-cross
Copy link
Contributor Author

@EmoGarbage404 I'm so sorry.... but I added in tons of changes to remove DoorComponent requirements on the BoltSystem and DoorRemoteSystem...

It all ties into how things get pried... so.......

@Quantum-cross Quantum-cross marked this pull request as ready for review May 22, 2025 16:52
@Quantum-cross Quantum-cross changed the title Remove dependency of DoorComponent from PryingSystem, add PryableComponent Remove dependency of DoorComponent from PryingSystem, Add BoltSystem, add PryableComponent May 22, 2025
@Quantum-cross
Copy link
Contributor Author

this is the final extent of the scope creep I promise

@Quantum-cross
Copy link
Contributor Author

Do tests count as scope creep? I added ~30 tests using a generic prying test function.

@github-actions github-actions bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Jun 21, 2025
@github-actions
Copy link
Contributor

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

@SlamBamActionman SlamBamActionman added P3: Standard Priority: Default priority for repository items. and removed S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. labels Jun 28, 2025
@SlamBamActionman SlamBamActionman added T: Refactor Type: Refactor of notable amount of codebase A: General Interactions Area: General in-game interactions that don't relate to another area. labels Jun 28, 2025
@github-actions github-actions bot removed the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Jul 9, 2025
@Quantum-cross Quantum-cross changed the title Remove dependency of DoorComponent from PryingSystem, Add BoltSystem, add PryableComponent Remove dependency of DoorComponent from PryingSystem, add PryableComponent Jul 25, 2025
@Quantum-cross
Copy link
Contributor Author

@EmoGarbage404 I've un-scope creeped this, I'll add the work to the bolt system in another PR.
Also poking @ScarKy0 because this is related to the turnstile stuff. I'm about to factor out the construction steps there.

@Quantum-cross Quantum-cross changed the title Remove dependency of DoorComponent from PryingSystem, add PryableComponent Turnstile improvements -- Remove dependency of DoorComponent from PryingSystem, add PryableComponent -- Part 2 Jul 27, 2025
@Quantum-cross Quantum-cross changed the title Turnstile improvements -- Remove dependency of DoorComponent from PryingSystem, add PryableComponent -- Part 2 Turnstile improvements -- Remove dependency of DoorComponent from PryingSystem, add PryableComponent -- Part 1.5 Jul 27, 2025
@Quantum-cross Quantum-cross changed the title Turnstile improvements -- Remove dependency of DoorComponent from PryingSystem, add PryableComponent -- Part 1.5 Remove dependency of DoorComponent from PryingSystem, add PryableComponent Jul 27, 2025
@Quantum-cross
Copy link
Contributor Author

actually nevermind I'm not labelling this as part of the turnstile improvements :|

@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: General Interactions Area: General in-game interactions that don't relate to another area. P3: Standard Priority: Default priority for repository items. 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