For players that are not yet aware, this is extremely important for strafers. Turns out that (in short), they put in the patch notes that strafe was going to be buffed, but strafe was never actually buffed. Blizzard edited the wrong file, which only changes the numbers on the character stats screen for strafe that are displayed as the tooltip, so we are being told it’s stronger by the game, when in fact the effect itself in the correct file was never edited to actually make it stronger. We went basically this entire time without the actual buff we were supposed to have. I removed his reference links so I could post the information here, but I thought it needed to get out there.
Found on the web. Was submitted as a bug.
PSA: Strafe still has a 3/4 damage penalty despite what the 2.4 patch notes say
D2R
TL;DR at the bottom if you don’t feel like reading a wall of text.
Strafe
- Removed the 25% weapon damage reduction from this skill
Unfortunately this isn’t actually the case because the D2R devs forgot to change one of the columns in the missiles.txt text file.
D2R (and original D2) has text files that control many functions of the game like skills, monsters, item affixes, etc. There’s two text files that we’re looking at in this case, skills.txt (handles skill functions and statistics) and missiles.txt (handles projectile functions and statistics).
What the devs did is change the “SrcDam” column for Strafe in skills.txt from 96 to 128.
What is “SrcDam”? To be honest I can’t describe it very well so I’ll just copy the descriptions from d2mods (aka Phrozen Keep, a site with a vast amount of modding and file information for D2/D2R) and also Blizzard’s very own data file guide that they include with D2R files (d2rmodding has a mirror to a PDF version of it that you can view, no download needed).
SrcDamage – “Source Damage”, this controls whenever the game should append the source units attack properties to the missile or not. Thi column is using 128ths (128=100%). This does not only reflect damage, but all other modifiers related to attack, including lifesteal and manasteal. Set this to -1 (poison clouds) to get rid of SrcDmg from skills.txt.
SrcDamage - Controls how much of the source unit’s damage should be added to the missile’s damage. This is calculated in 128ths and acts as a percentage modifier for the source unit’s damage that added to the missile. If equals -1 or 0, then the source damage is not included.
So while Blizzard changed Strafe’s “SrcDam” value from 96 (75%) to 128 (100%) in skills.txt and it seems like this should remove the penalty, it unfortunately does not because it’s actually handled in missiles.txt.
In missiles.txt there’s “strafearrow” (for bows) and “strafebolt” (for crossbows) that have their own “SrcDam” columns. Yep, they’re still set to 96 instead of 128 which is why Strafe still only deals 75% damage.
How do I know for sure that it’s not working as intended?
I did some testing. Sorry for the horribly convoluted method, I’m sure there’s a much easier way to test it but I’ll explain what I did.
In monstats.txt (handles monster statistics):
- set “enabled” column to 0 for fallen and quill rats (prevents them from spawning)
- set “AI” column to “Idle” for zombies (prevents them from moving or attacking),
- set “noRatio” to 0 to disable it (noRatio is a column that affects how monster’s baseline stats are calculated like life/damage, etc)
- set "MinHP(H) and “MaxHP(H)” columns to 5000 for zombies (this is why I disabled noRatio, otherwise they wouldn’t have 5000 life exactly)
- set “DamageRegen” column to 0 for zombies (prevents life regeneration)
In skills.txt:
- set “Param3” and “Param4” columns for Strafe to 1 (makes Strafe always shoot only 1 arrow)
After that I created a hero edited amazon that has these stats and items:
- 4000 current life and 8000 maximum life
- No allocated stat or skill points (500 available stat points and 200 available skill points, both for testing purposes)
- Plain short bow (1 - 4 damage) and arrows
- Small charm with 49 minimum/46 maximum damage
- Small charm with 50 min/50 max damage
- 6x small charms with 100% life steal each (600% life steal total)
Testing methodology:
My bow and charms give me a base damage of 100-100 (min: 1 + 49 + 50 = 100, max: 4 + 46 + 50 = 100).
I allocate points up the bow skill tree until I have 1 point in Strafe, which has 20% enhanced damage (5% from Strafe, 5% from Multiple Shot synergy, 10% from Guided Arrow synergy). I allocate 55 points to dexterity giving me 80 total dexterity (25 base dexterity). This gives me exactly 100% enhanced damage when using a bow, which increases my damage to 200-200.
Zombies have 50% damage reduction which would reduce my damage to 100-100, which means it should take exactly 50 hits to kill them. I also have 600% life steal which is reduced to 100% by the Hell penalty (1/3) and the zombies “drain effectiveness” stat (50%, which means life steal is half effective), so I should leech exactly 100 life per hit as well.
I shoot a zombie with Strafe and I only leech 56 life, which is consistent with the 3/4 penalty which also applies to life/mana steal (100 damage * .75 = 75 damage, 100% leech * .75 = 75% leech, 75 damage * .75 leech = 56.25 life returned). I continue shooting the zombie with Strafe until it dies, which takes 67 hits (75 damage * 67 = 5025 total damage).
Then I switch to Guided Arrow which has 12% enhanced damage, so I allocate an additional 8 dexterity (88 total) so I maintain 100% enhanced damage. I shoot the zombie and leech the expected 100 life and it takes exactly 50 hits to kill it.
Testing changes to missiles.txt:
After performing the above tests and determining that Strafe is still penalized, I adjusted “SrcDam” of “strafearrow” in missiles.txt from 96 to 128 and performed the tests again (I respecced the amazon so that the additional 8 dexterity doesn’t throw off the first test), and Strafe dealt full damage as intended, 100 life leeched per hit and exactly 50 hits to kill the zombie.
TL;DR: To properly remove the 3/4 damage penalty from Strafe the devs need to change the “SrcDam” of “strafearrow” and “strafebolt” in missiles.txt from 96 to 128. What they actually did was change the “SrcDam” of Strafe in skills.txt from 96 to 128 which only changes the damage displayed in the character screen damage calculation.
Again I apologize for the convoluted testing method and the wall of text here, hopefully it’s not too confusing. Thanks to Bonesy from Phrozen Keep/D2RModding for pointing me towards the missiles.txt file when I asked about Strafe’s odd behavior.
I made a bug report here in the D2R forums, hopefully it gets fixed eventually.