Someone asks me how many Fire Damage are necessary to trigger GetHit Mode Animation (aka as FHR State)
I answer that only dmg > 1/12 Max Life triggers this effect.
This information was given by GFraizer on Arreat summit before the release of LOD and never confirmed AFAIK.
So I decided to run GEtHit Trigger Function into my debugger (Patch 1.11b)
Here is the result
At the end of combat Resolution a function manage Combat Trigger Effects. This function calls the GetHit Function.
I will trace this function this week end to confirm what the conditions to call the GetHit Function are.
For Example, I know that Death's trigger (Flag 2) cancel GetHit (for obvious reason) the GetHit column in missiles.txt must be set to 1 ...
Now it's time to a direct translation of GetHit function from assembly
1) GetHit Validation Checks
If Target is Frozen then Exit
If poison Damage > 0 and Sum of Damage = Poison damage then exit (<=> Poison only then Exit)
Id Damage < 1 then exit (a kind of blizzard optimization)
2) GetHitTriggerNumber
Here is how this compute
First get Target Max Life
Then Set divisor
GetHitTriggerNumber = Max Life / divisor (the old 1/12 Max HP before LOD)
The divisor is related to HitClass
(Mostly hardcoded, initially read from "HitClass.bin"
, Monstats2.bin , Skills.bin or Missiles.bin)
The HitClass Divisor table is
hitClass 5 --> 64
hitClass 4 et 8 --> 32
HitClass 2,6,10,11 --> 8
hitclass 1,3,7,9,12 and Hitclass > 12 --> 16
I will do some debug this Week-end in order to clarify the HitClass handling
Here is some informations
HitClasses Table is
Hit Class Code
0 None
1 Hand To Hand hth
2 One Hand Swing vs. Small 1hss
3 One Hand Swing vs. Large 1hsl
4 Two Hand Swing vs. Small 2hss
5 Two Hand Swing vs. Large 2hsl
6 One Hand Thrust 1ht
7 Two Hand Thrust 2ht
8 Club club
9 Staff staf
10 Bow bow
11 Crossbow xbow
12 Claw claw
13 Overlay over
Monsters have mostly Hitclass 3 or 12
Most of the magic skills have hitclass > 12
3) GetHit Resolution
Here are the different checks
If damage < GetHitTriggerNumber Then Exit
If damage < GetHitTriggerNumber * 2 Then RND(2) If result = 0 then Exit
If damage < GetHitTriggerNumber * 4 Then RND(4) If result = 0 then Exit
If damage > GetHitTriggerNumber * 4 Then GetHit = True
Here is an example for the default Divisor (16)
If Damage > 1/4MaxHP Then GetHit = True
If 1/4MaxHP > Damage > 1/8MaxHP Then GetHit Probability = 75%
IF 1/8MaxHP > damage > 1/16MaxHP GetHit Probability = 50% * 75% = 37.5%
then a final check test if Monster can be in GetHit Mode