Honko's calc is implementing fur coat differently than Jake's. At the moment Honko's is using Fur Coat as a Huge Power for defenses - doubling the defense stat - while Jake's is implementing it similar to Reflect - halving damage at the end. These are not equivalent. I believe that the correct implementation is Jake's - Fur Coat halves physical damage.I don't know where to post this, but since it involves showdown's damage calculator I guess here is ok? (Please someone direct me to the correct place if this is wrong.)
There seems to be a disagreement with Fur Coat and the damage taken with the showdown calculator and the jake-white VGC one. Both calcs below are exactly the same EVs, nature, etc, and I set them all to the same level (100) for the sake of the comparison. As you can see one shows a 91.8% chance to 2HKO while the other shows 89.1%.
https://pokemonshowdown.com/damagecalc/
252 Atk Life Orb Garchomp Earthquake vs. 252 HP / 0 Def Fur Coat Persian-Alola: 161-191 (48.2 - 57.1%) -- 91.8% chance to 2HKO
(161, 164, 165, 168, 169, 172, 173, 175, 177, 179, 181, 183, 185, 187, 188, 191)
http://jake-white.github.io/VGC-Damage-Calculator/
252 Atk Life Orb Garchomp Earthquake vs. 252 HP / 0 Def Fur Coat Persian-Alola: 161-190 (48.2 - 56.8%) -- 89.1% chance to 2HKO
(161, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190)
If you remove Fur Coat as the ability on both, then they both become the same % and damage rolls, so it seems the issue is with Fur Coat.
So my main reason for posting here is to find out if this is an error with the showdown calc or the jake-white one? (I don't know which to believe!)
I went and tested this and confirmed it in the calc by manually changing the actual stat (138 Base Defense with 31 IVs and 0 EVs is exactly double 60 Base) or applying reflect after removing the ability. I then went and confirmed it in the code.
The relevant section in the github that's (probably) incorrect is in js/damage.js on line 493-496 where it's currently written as
if (defAbility === "Fur Coat" && hitsPhysical) {
dfMods.push(0x2000);
description.defenderAbility = defAbility;
}
It should probably be written as finalMods.push(0x800); instead of the flat 2x defense that is it now. Of course it's entirely possible I've misunderstood what I've found and Fur Coat should be a flat 2x defense in which case Jake needs to fix his.