-
Notifications
You must be signed in to change notification settings - Fork 4.1k
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
Make lockpicking/safecracking proficiencies functional #44860
Make lockpicking/safecracking proficiencies functional #44860
Conversation
Diminishing returns as the stats grow less effective, but it is good to have the details
doesn't increase xp yet.
…ficiencies-before-someone-notices
am having to fully rewrite the disarming function.
Left in some of the variable name improvements because... why not. The rest can wait for a second PR
…ficiencies-before-someone-notices
src/activity_actor.cpp
Outdated
( std::pow( 1.3, who.get_skill_level( skill_mechanics ) ) + | ||
it->get_quality( qual_LOCKPICK ) - it->damage() / 2000.0 ) + | ||
who.dex_cur / 4.0; | ||
int pick_roll = ( std::pow( 1.5, who.get_skill_level( skill_traps ) ) * |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think pick_roll needs to be a float throughout this process, otherwise it's going to have some pretty bad rounding behavior.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yknow what, I'm just going to change the dang thing to use a normal_roll like I have done with traps... my code there has all the float stuff worked in.
Summary
SUMMARY: Content "Makes lockpicking and safecracking proficiencies do things and be learnable."
Purpose of change
I added proficiencies for lockpicking and safecracking when I created the Devices skill, but I didn't make them do anything yet. A few redditors have noticed so I guess my clever ruse is failing... better act quick before word gets out.
Describe the solution
LOCKPICKING
These bonuses are mapped onto a normal_roll with a standard deviation of 2, which is (for now) compared to a randomly generated lock difficulty. In the future, lock difficulty should be defined by an attribute on the terrain/furniture you are unlocking.
Proficiency also affects the speed at which you pick a lock.
Added a debug message that displays your rolls for lockpicking.
SAFECRACKING
Describe alternatives you've considered
I was sorely tempted to improve the way we calculate these, and use a normal_roll, but I am trying to avoid adding large new features or changing balance much before Stable.
Testing
Extensive!
High failure rate with no skill, no proficiency, and average stats:
Better skill with no proficiency is less bad on your tools but still very hard:
Low skill but proficient at lockpicking is also not ideal but better than no prof:
Not screencapped: Moderate skill and having the proficiency got the lock on the first try several times.
You can learn these proficiencies through practice now.
When you do, you can advance to more complex proficiencies
I did not take screencaps of safecracking, but it works as intended: It takes a longer time without proficiency, practicing grants safecracking XP, and getting safecracking proficiency makes it much faster.
Additional context
I was going to add disarming, spotting, and setting traps to this PR, but I decided I'd rather just get this set in and work on those separately.
We really need to have lockpicking difficulty defined by the thing being picked. Currently I've left it a random number but that has to change at some point