Version 0.37.12-exp
If the attacker of a DFA falls due to a successful attack, the attacker takes damage as though falling 2 levels. The Dread Reaper in the following example is 75 tons and thus should take 8 damage:
=========================
Physical attacks for Dread Reaper A (C) (Crazy S)
Attempting death from above on Grigori C-GRG-O Invictus (Princess); needs 2, rolls 10 : - Direct Blow - hits.
...
Dread Reaper A (C) (Crazy S) must make 1 piloting skill roll(s) (executed death from above).
The base target is 3 [3 (Base piloting skill)].
Roll #1, (3 (Base piloting skill) + 4 (executed death from above)); needs 7, rolls 5 : falls.
Dread Reaper A (C) (Crazy S) falls on its right side, suffering 16 damage.
Dread Reaper A (C) (Crazy S) takes 5 damage to CTR.
6 Armor remaining.
Dread Reaper A (C) (Crazy S) takes 5 damage to LTR.
3 Armor remaining.
Dread Reaper A (C) (Crazy S) takes 5 damage to RT.
17 Armor remaining.
Dread Reaper A (C) (Crazy S) takes 1 damage to LA.
23 Armor remaining.
=========================
As you can see, the 'Mech took 16 damage, as though from a level 2 fall.
According to the "Falls" section of the DFA rules (TW, page 150):
=========================
A successful death from above attack may cause both ’Mechs
to fall. Both MechWarriors must make Piloting Skill Rolls, the
target adding a +2 modifier and the attacker adding a +4 modifier.
If either unit fails this roll, the unit takes damage as from a
0-level fall.
On an unsuccessful attack, the attacker automatically falls,
taking damage as though the ’Mech had fallen 2 levels onto its
back (see Falling, p. 68).
=========================
The current implementation is correct if the DFA missed. However, my 'Mech in the example hit with the DFA, and thus should take damage as though from a level 0 fall.
Alright, I've got this figured out and fixed in [r10975].
It looks like the bug was introduced in [r10432].
In that commit, a change was made to what the Entity's elevation was set to before doing the displacement. The code used Entity.calcElevation(2), but it should've used Entity.calcElevation(5). The 2 argument version uses the Entity's current elevation as the "assumed elevation" and for DFA's it was set to 1 from performing the DFA. With the 5 argument version you can set the asssumed elevation to the proper value of 0 (since the 'mech is landing).
Related
Commit: [r10432]
Commit: [r10975]