Copy pasted from the thread in General Discussion (11/6):
I’ve done some testing with all the other bow skills that give attack rating% and I corroborate Ubeogesh’s findings: The AR% for all bow skills works properly except for Strafe where it doesn’t work.
Here’s what I did before the actual testing:
Text file changes
monstats.txt:
- set fallen1 and quillrat1 “enabled” column to 0 to prevent them from spawning in the Blood Moor
- set zombie1 “AI” column to “Idle” to prevent them from moving or attacking
- set zombie1 “Level(H)” to 99, making the zombie level 99 in Hell
- set zombie1 "ResFi(H) to 100, this makes them fire immune for easier testing of Fire Arrow, EA, and IM
- set zombie1 “noRatio” column to 1, this makes it so they use the statistics (level, life, defense, damage, etc.) in monstats.txt instead of a ratio that uses monlevel.txt which is important for the next step
- set zombie1 “AC(H)” (AC = Armor Class which is the same thing as defense, interesting holdover from Diablo 1 ) to 1000
skills.txt:
- changed “maxlvl” column of Magic Arrow, Fire Arrow, Cold Arrow, Exploding Arrow, Ice Arrow, Strafe, Immolation Arrow, and Freezing Arrow to 99 (allows me to increase those skills up to 99 instead of the usual 20)
- changed “param3” and “param4” columns of Strafe to 1, making it so Strafe can only shoot a single arrow per skill use
Character info
I hero edited a level 99 amazon with a plain short bow and arrows, no allocated stat or skill points, and 505 stat points and 200 skill points in reserve.
Now for the actual testing procedure itself:
- I allocated 31 points to dexterity (for a total of 56 dexterity) to increase my base attack rating to 250.
- I maxed out the specific skill I’m testing.
- I shot at a normal zombie (not champion or unique) 100 times and recorded the number of missed shots. I used a maxed quiver (500) arrows as a reference, stopping once there was 400 arrows remaining. In the case of Magic Arrow I very carefully and slowly counted the shots and recorded the misses.
- I would respec after testing each skill (I don’t have enough skills points to max each skill so I have to respec) and I allocated 31 dexterity each time so that it didn’t influence the testing.
NOTE: While I did change the “maxlvl” columns for the skills to 99, I can’t actually allocate that many points for the tier 2+ skills because I’m restricted by the required level (e.g. I can only increase Ice Arrow to level 94 because level 95 would require character level 100 which is impossible without more modding).
So with that out of the way, here’s the results:
Results
Normal Attack
Attack Rating: 250
Chance to Hit: 20%
Successful Hits: 16/100
Misses: 84/100Level 99 Magic Arrow:
Attack Rating: 2480
Attack Rating%: 892%
Chance to Hit: 71%
Successful Hits: 74/100
Misses: 26/100Level 99 Fire Arrow:
Attack Rating: 2480
Attack Rating%: 892%
Chance to Hit: 71%
Successful Hits: 71/100
Misses: 29/100Level 94 Cold Arrow:
Attack Rating: 2367
Attack Rating%: 847%
Chance to Hit: 70%
Successful Hits: 76/100
Misses: 24/100Level 88 Exploding Arrow:
Attack Rating: 2257
Attack Rating%: 803%
Chance to Hit: 69%
Successful Hits: 73/100
Misses: 27/100Level 82 Ice Arrow:
Attack Rating: 2122
Attack Rating%: 749%
Chance to Hit: 68%
Successful Hits: 67/100
Misses: 33/100Level 76 Strafe:
Attack Rating: 2012
Attack Rating%: 705%
Chance to Hit: 66%
Successful Hits: 13/100
Misses: 87/100Level 76 Immolation Arrow:
Attack Rating: 2012
Attack Rating%: 705%
Chance to Hit: 66%
Successful Hits: 70/100
Misses: 30/100Level 70 Freezing Arrow:
Attack Rating: 1902
Attack Rating%: 661%
Chance to Hit: 65%
Successful Hits: 72/100
Misses: 28/100
As you can see almost every skill the AR% is working as expected, with the sole exception of Strafe.
Level 76 Strafe:
Attack Rating: 2012
Attack Rating%: 705%
Chance to Hit: 66%
Successful Hits: 13/100
Misses: 87/100
Level 76 Immolation Arrow:
Attack Rating: 2012
Attack Rating%: 705%
Chance to Hit: 66%
Successful Hits: 70/100
Misses: 30/100
Strafe and Immo Arrow (should) have exactly the same AR and AR%, yet Strafe only successfully hit the target 13 times compared to IA hitting the target 70 times. Clearly Strafe’s AR% isn’t working.
I’ll need to do further testing on how to fix this, but it’s likely something a similar issue to the damage where they forgot to change missiles.txt or something. I shall post here again if/when I find the solution, assuming I don’t get too lazy or forget.
TL;DR: Bow skill AR% bug from original D2 has been fixed in D2R (so AR% works as intended), Strafe had AR% added in 2.4 but it wasn’t added correctly so it has no effect.
New Info (11/7):
Got some more info with the help of Bonesy, one of the modders at D2RModding.
I’ll be honest that I’m out of my element when it comes to server functions and stuff like that, but I’ll try to explain to the best of my limited knowledge of what’s going on with Strafe.
The reason why the AR% isn’t working is because the backend/hardcode of the “srvdofunc” that Strafe uses in skills.txt isn’t properly setup, so the “tohit” (baseline AR%) and “tohitlvl” (AR% per level) of Strafe doesn’t have any effect at all.
What is “srvdofunc”? I’m not really sure myself so I’ll just copy it from the Phrozen Keep:
srvdofunc : Server finishing function, this controls the server side function executed when the starting function finishes executing, it might either be called repeatedly as long as the mouse button remains down, or it may be called periodically (for skills like paladin auras and blade shield).
So this requires a backend fix of “srvdofunc” 12 (the one that Strafe uses) for the AR% of Strafe to work, at least from what I understand.
I tested this by changing the “srvdofunc” of Strafe from 12 to 1 (the same one used by normal attack) in skills.txt and the AR% worked, I changed it back to 12 and tested it again and the AR% had no effect again.
I also tested if it was an issue with the missile by changing the “srvmissilea” of Strafe from “strafearrow” to “multipleshotarrow” and the AR% still didn’t work, so it seems unlikely for that to be the issue.
TL;DR: “srvdofunc” 12 (the one Strafe uses) needs a backend fix to make the AR% work, currently the AR% has no effect.