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

Allow safecracking prof to identify safe mechanisms #77925

Merged

Conversation

AlexMooney
Copy link
Contributor

@AlexMooney AlexMooney commented Nov 17, 2024

Summary

Features "Safe crackers guess combinations more accurately"

Purpose of change

Guessing safe combinations is based on the number of possible combinations and assumes you can try one such combination in 10 seconds:

assume a 3 digit 100-number code. many safes allow adjacent + 1 dial locations to match, so 1/20^3, or 1/8,000 odds.
additionally, safes can be left-handed or right-handed, doubling the problem space.
the dialing procedures for safes vary, i'm estimating 5 procedures.
see https://hoogerhydesafe.com/resources/combination-lock-dialing-procedures/
at the end of the day, that means a 1 / 80,000 chance per attempt.
If someone is interested, they can feel free to add a proficiency for "safe recognition" to mitigate or eliminate this 2x and 5x factor.
-- Kevin

I'm interested so I've made it so the safe cracking proficiency allows you to know the mechanism of how a safe combination should be entered. It's still much slower than proper safe cracking with a tool, of course!

Describe the solution

If you have the proficiency, you only have to check the 1/8,000 odds.

Describe alternatives you've considered

  • Make the safe cracking activity take a variable amount of time to simulate how long it takes to stumble across the correct combination.
  • Give safecrackers one attempt at more like 1/50 to represent them trying the factory default combination before moving on to 1/8000.
  • Make safe cracking proficiency less effective. It's still so unlikely to open a safe that I think it's fine even if it's overestimating the ability to identify the safe mechanism.
  • Extract odds and message to variables assigned within the proficiency check and interpolating the conditional values. Doubling the code seemed fine since it's all in one place.

Testing

image
Tried to crack a safe before and after having the safe cracking proficiency.

Additional Context

#44958

With the proficiency you know which way to turn the dial, but you're
still hopelessly outclassed by someone with safe cracking gear.
@github-actions github-actions bot added [C++] Changes (can be) made in C++. Previously named `Code` <Enhancement / Feature> New features, or enhancements on existing json-styled JSON lint passed, label assigned by github actions astyled astyled PR, label is assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions labels Nov 17, 2024
@Night-Pryanik Night-Pryanik merged commit e5cdaca into CleverRaven:master Nov 17, 2024
22 of 29 checks passed
@AlexMooney AlexMooney deleted the safecracking_combination_guessing branch November 17, 2024 20:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
astyled astyled PR, label is assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions [C++] Changes (can be) made in C++. Previously named `Code` <Enhancement / Feature> New features, or enhancements on existing json-styled JSON lint passed, label assigned by github actions
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants