Unless stated otherwise, everything here is Diablo II: Resurrected build 3.3.93847, Reign of the Warlock.
Unless stated otherwise, everything here is Diablo II: Resurrected build 3.3.93847, Reign of the Warlock.

When active, aura reflects melee damage taken by you and your party back at your enemies.
Thorns is a level 6 Paladin Offensive Aura with no prerequisite; it opens Sanctuary. While it is active, a melee attacker that hits you or an ally in the radius takes damage back: a percentage of the physical damage it dealt and, in the current game, a flat amount as well. Two numbers decide it: the percentage, 250% at level 1 and 1,010% at level 20, and the flat return, 4 at level 1 and 144 at level 20.
| Level | Radius | Attacker Takes Damage of | #% damage returned |
|---|---|---|---|
| 1 | 10.67 yards | 4 | 250% damage returned |
| 2 | 12 yards | 8 | 290% damage returned |
| 3 | 13.33 yards | 12 | 330% damage returned |
| 4 | 14.67 yards | 16 | 370% damage returned |
| 5 | 16 yards | 20 | 410% damage returned |
| 6 | 17.33 yards | 24 | 450% damage returned |
| 7 | 18.67 yards | 28 | 490% damage returned |
| 8 | 20 yards | 32 | 530% damage returned |
| 9 | 21.33 yards | 40 | 570% damage returned |
| 10 | 22.67 yards | 48 | 610% damage returned |
| 11 | 24 yards | 56 | 650% damage returned |
| 12 | 25.33 yards | 64 | 690% damage returned |
| 13 | 26.67 yards | 72 | 730% damage returned |
| 14 | 28 yards | 80 | 770% damage returned |
| 15 | 29.33 yards | 88 | 810% damage returned |
| 16 | 30.67 yards | 96 | 850% damage returned |
| 17 | 32 yards | 108 | 890% damage returned |
| 18 | 33.33 yards | 120 | 930% damage returned |
| 19 | 34.67 yards | 132 | 970% damage returned |
| 20 | 36 yards | 144 | 1010% damage returned |
| 21 | 37.33 yards | 156 | 1050% damage returned |
| 22 | 38.67 yards | 168 | 1090% damage returned |
| 23 | 40 yards | 184 | 1130% damage returned |
| 24 | 41.33 yards | 200 | 1170% damage returned |
| 25 | 42.67 yards | 216 | 1210% damage returned |
| 26 | 44 yards | 232 | 1250% damage returned |
| 27 | 45.33 yards | 248 | 1290% damage returned |
| 28 | 46.67 yards | 264 | 1330% damage returned |
| 29 | 48 yards | 284 | 1370% damage returned |
| 30 | 49.33 yards | 304 | 1410% damage returned |
The percentage is Param3 250 as the baseline and Param4 +40 a level: 1,010% at level 20, 1,410% at level 30. The flat return is the EMin column and its five brackets: 4 at level 1, +4 a level to level 8, +8 to 16, +12 to 22, +16 to 28 and +20 past that, so 144 at level 20. The radius is Param1 16 plus Param2 2 a level, times two thirds for yards: 10 2/3 yards at level 1, 36 at level 20. An aura costs no mana. Every line reads lvl, so +skills from gear and an Aura When Equipped item count. The Basin's older page prints only the percentage; the flat line is the current table's.
Thorns is an aura with the row's thorns state on the caster and on every ally in range, refreshed every 2 seconds (perdelay 50). It carries two stats: item_attackertakesdamage, the same stat as the item modifier Attacker Takes Damage, set to the flat value, and thorns_percent, the percentage. There is no hit check and no cast. The Basin's page gives the rules of the return:
Thorns pays out of what you actually take: the better your damage reduction, the less comes back. Against a physical immune nothing comes back at all.
The Basin's page lists the other supplier: the Act 2 Combat mercenary hired in Nightmare or, in the current game, Hell carries Thorns.
No synergies: Thorns has no dsc3 lines and no …SymPerCalc column, and it feeds no other skill. All three lines read lvl, so a +skill from gear raises the aura exactly as a hard point does. The Basin's Conversion page notes that a monster cursed with Amplify Damage before it is converted keeps the curse, which raises what Thorns returns through the convert.
Thorns never attacks a player itself; it returns damage to one who hits you in melee. The Basin's page says the returned damage is cut to an eighth when it is applied to a player or a mercenary, and a player's hit on another player is cut to 17% of its value (difficultylevels.txt PlayerDamagePercentVSPlayer) before anything else, see Player versus Player, so the physical damage the return is based on is small to begin with.
Written from the game's tables (build 3.3.93847) and the cited pages; a per-level table is computed from skills.txt and skilldesc.txt by the same evaluator the skill pages use. A “legacy rule” is a published engine rule no table proves; a “game table” is read from the table named. · Report incorrect data