So as I work on EcCo I finally decided to do something about stealing mechanics. Vanilla stealing just doesn't work. I'm at 18% skill and can easily steal stuff, chances are just too high. So I dig into engine how it works and found it to be strange:
- First it calculates a chance modifier based on item weight (but it doesn't take stack size into account, as you can steal several "big" items for the "price" of one), how many items you steal in a row (each consecutive attempt is 1% harder), if you're standing in front of the target (-25% if you do)
- If you have a Pickpocket perk, it ignores weight and facing penalties.
- If target is down, it increases by +25%.
- Then it adds your Steal skill to this modifier and caps at 95% (like most chance-based rolls in the game).
So far all good, right? Well this is where weird shit happens:
- It makes first random roll (using normal roll with critical chance).
- If roll is critical success, all good, item stolen.
- If roll is critical failure, you get caught.
- ELSE (if it's either success OR failure), it makes a second roll! This one is based on target's Steal skill as opposed to your skill and a negated modifier (the same one we calculated in the beginning and used for the first roll).
- IF this "catch roll" succeeds (success or critical success), then you get caught. Otherwise, you steal successfully.
Do you see an issue here? The first roll is the one using your skill and not an opponent's skill. And if you FAIL this skill check but target also fails his check, then you get a successful result. Which basically means you have a good chance to steal even at steal skill of 0%...
My first thought was this was a mistake, some oversight on the part of devs (maybe they rushed to implement this mechanic and it worked "well enough", they never bothered about balancing thief characters?).
So my response to this was to implement a modified steal mechanic:
https://github.com/phobos2077/fo2_ecco/blob/master/scripts_src/_pbs_main/gl_pbs_steal.ssl
- If catch roll failed but steal roll also failed, then "silently" fail steal instead of succeeding - this prints a new message.
- Also adds some extra tweaks like being able to configure all the constant numbers from ini file and taking into account item quantity, among other stuff (I also added optional local town reputation hit).
Looking again at this logic now, I think maybe the idea was that when you try to steal something, first roll basically defines how "sloppy" you are. So success or fail are treated in the same way. But then even if you're sloppy but not too much, but the victim is also sloppy - you get away with your poor skills. Like stealing from a blind person))
The issue with this justification is that it uses only "Steal" skill for the "catch" roll. Most critters have low steal skill (because, except for Den children's, nobody ever steals). Maybe if it used perception instead, it would make more sense? But then again, I still think it's wrong to treat both success and fail in the same way. Makes your skill investment almost meaningless.
I think this script is probably not the final version. It kinda works in how it makes steal harder and skill matter more, but you can still save-scum-steal lots of stuff even at 15% skill. Maybe if I subtract target's skill and/or perception with a multiplier for the first roll...
What do you think? Do you like the new mechanic or you prefer vanilla? How do you think this should work?
- First it calculates a chance modifier based on item weight (but it doesn't take stack size into account, as you can steal several "big" items for the "price" of one), how many items you steal in a row (each consecutive attempt is 1% harder), if you're standing in front of the target (-25% if you do)
- If you have a Pickpocket perk, it ignores weight and facing penalties.
- If target is down, it increases by +25%.
- Then it adds your Steal skill to this modifier and caps at 95% (like most chance-based rolls in the game).
So far all good, right? Well this is where weird shit happens:
- It makes first random roll (using normal roll with critical chance).
- If roll is critical success, all good, item stolen.
- If roll is critical failure, you get caught.
- ELSE (if it's either success OR failure), it makes a second roll! This one is based on target's Steal skill as opposed to your skill and a negated modifier (the same one we calculated in the beginning and used for the first roll).
- IF this "catch roll" succeeds (success or critical success), then you get caught. Otherwise, you steal successfully.
Do you see an issue here? The first roll is the one using your skill and not an opponent's skill. And if you FAIL this skill check but target also fails his check, then you get a successful result. Which basically means you have a good chance to steal even at steal skill of 0%...
My first thought was this was a mistake, some oversight on the part of devs (maybe they rushed to implement this mechanic and it worked "well enough", they never bothered about balancing thief characters?).
So my response to this was to implement a modified steal mechanic:
https://github.com/phobos2077/fo2_ecco/blob/master/scripts_src/_pbs_main/gl_pbs_steal.ssl
- If catch roll failed but steal roll also failed, then "silently" fail steal instead of succeeding - this prints a new message.
- Also adds some extra tweaks like being able to configure all the constant numbers from ini file and taking into account item quantity, among other stuff (I also added optional local town reputation hit).
Looking again at this logic now, I think maybe the idea was that when you try to steal something, first roll basically defines how "sloppy" you are. So success or fail are treated in the same way. But then even if you're sloppy but not too much, but the victim is also sloppy - you get away with your poor skills. Like stealing from a blind person))
The issue with this justification is that it uses only "Steal" skill for the "catch" roll. Most critters have low steal skill (because, except for Den children's, nobody ever steals). Maybe if it used perception instead, it would make more sense? But then again, I still think it's wrong to treat both success and fail in the same way. Makes your skill investment almost meaningless.
I think this script is probably not the final version. It kinda works in how it makes steal harder and skill matter more, but you can still save-scum-steal lots of stuff even at 15% skill. Maybe if I subtract target's skill and/or perception with a multiplier for the first roll...
What do you think? Do you like the new mechanic or you prefer vanilla? How do you think this should work?