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
Update aiming [RDY] #17962
Update aiming [RDY] #17962
Conversation
269c3d9
to
7aad564
Compare
Effectively this PR leaves engagement::effective_min50% chance of good hit with no aiming
engagement::effective_max50% chance of good hit at maximum aim
Further combinations could be tested by updating |
Rebalancing them around 8 instead of 12 only makes the characters blander: lowering dexterity and perception is now even more punishing than before. It should be rebalanced around high numbers (14, 16 or 20) or removed completely. |
@Coolthulhu the penalty remains unchagned at σ=15 per level so low Whats changed is that The current check also ensures that
The main priority for this PR is the graphing component and the changes to aiming so I'm not averse to dropping stat penalty altogether and coming back to it later if you are otherwise happy with the PR. |
While 12 wasn't perfect, since it resulted in a threshold, it offered some sort of a direction. Now you removed both aiming speed adjustment from stats and dispersion modifier from stats.
|
Lets go with removal then as that was my only reason for wanting to retain it. We can devise some better effects from stats in a later PR - possibly |
Taking out an entire stat is a major change. I'd be fine with making dexterity not have much of a role in ranged combat, since it is already good enough in melee, but perception was nearly a dump stat even with the impact on ranged combat. This is not a thing that can wait for a later PR. I see the following options:
|
Whether or not |
Does that mean perception affects NV in master? |
Ready |
info.emplace_back( "GUN", space + _( "Maximum range: " ), "<num>", abs_max ); | ||
int aim_mv = g->u.gun_engagement_moves( *mod ); | ||
if( aim_mv > 0 ) { | ||
info.emplace_back( "GUN", _( "Maximum aiming time: " ), "<num> seconds", int( aim_mv / 16.67 ), true, "", true, true ); |
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.
Why time instead of moves? will melee weapon also change to time?
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.
Why time instead of moves?
It's far more intuitive than moves and isn't later broken if we adjust moves/turn (which has been previously discussed). Lots of other code expresses time as opposed to moves/turns for this reason.
will melee weapon also change to time?
Not as of this PR. Those values are typically of the same magnitude making comparison easier.
@Coolthulhu can we have a go at merge testing this. I have more code to commit but there is too work here to justify a further dependent branch |
Also fixes #14938 |
Additionally fixes #14928 |
Not sure if caused here, but I can't aim at friends. Also, aiming at a non-friend monster then aiming at a friend causes a segfault. |
In character creation, perception doesn't have any mechanical advantages listed. If it affects sight dispersion, it should say so there, since it doesn't seem to say it anywhere else. |
Existing bug |
It has doxygen comments via |
|
Have updated everything else |
Actually I might update chargen for all stats as a separate PR using the doxygen comments as a reference |
I tested it, but as a significant mechanical change it still may have some problems, so look out for reports. |
Cross posts are appreciated but I have as of recent begun to skim for the recent posts section |
Overview
Subset of #17712 that provides:
player::gun_engagement_range
The below is produced using the R graphing script:
S1
definition for a survivor (all stats 8, all skills 4) wearing light survivor gloves + mask.9mm
,223
and270
)accuracy_goodhit
Initial status
a rifle scope reaches full aim after 2 turns and gains you only a single extra tile
a highly accurate rifle (σ=30) and an inaccurate pistol have (σ=380) differ by only two tiles
rifle with scope is only 50% better than pistol and both are useless apart from at point-blank range
Increase effect of aiming
MIN_RECOIL
to 600 results in a proportional increase in aiming timeeg. turns required to achieve maximum aim with
ar_15
increases by 450% from 1 to 4aim_speed
is irrelevantglock_19
has half theaim_speed
(4) ofar15
(8) but their curves are identicalAim speed differs by weapon
aim_speed
has only trivial effect inCharacter::aim_per_time
. The following implementation is both simpler and produces much better results.JSON
changes (probably rescalingaim_speed
)Increase effect of weapon stats
from nil to maximum skill is Δσ=600, whereas from a pistol to a rifle is typically Δσ=300.
markmanship
has too little effectonly 25% of player dispersion results from
marksmanship
Considering few players will reach
marksmanship 10
and even fewer will max out a ranged skill we need to reduce the effect whilst still granting a bonus for each successive level. The following works well reducing both the overall effect and makingmarksmanship
twice as important as weapon skill:Drop excessive penalty from stats
ranged_dex_mod()
andranged_per_mod()
were implemented when character generation encouraged Min-Maxing and most characters had stats of 12Summary