MegaMek / megamek

MegaMek is a networked Java clone of BattleTech, a turn-based sci-fi boardgame for 2+ players. Fight using giant robots, tanks, and/or infantry on a hex-based map.
http://www.megamek.org
GNU General Public License v2.0
297 stars 287 forks source link

47.9 DFA target damage calculation incorrect #2206

Closed gsparks3 closed 4 years ago

gsparks3 commented 4 years ago

Environment

Megamek - v47.9 (appears in both standalone and MekHQ integrated Megamek) Windows 10 Java 14.0.2

Description

Instead of applying the specified total DFA damage in 5-point clusters, MM v47.9 appears to take the total damage, subtract 5 from it, then apply THAT damage as a single cluster - followed by subtracting another 5 points from the total, then applying THAT as a single cluster, and repeating this process until running out of damage. This both causes the total DFA damage to be incorrect, and significantly increases the total damage done from a high-tonnage DFA. However, the damage applied to the attacker is calculated and applied correctly as 5-point clusters.

Example: image

Note that clusters of 22 damage, 17 damage, 12 damage, 7 damage, and 2 damage are applied to the target.

Reproduction steps:

  1. Open the attached saved game in Megamek.
  2. DFA the UrbanMech with the Highlander.
  3. Skip the (disconnected) bot's turn (optional, can Replace Player instead).
  4. Observe the damage clusters shown in the damage report.

Files

Player name: Mishra DFAtest.sav.gz

HammerGS commented 4 years ago

We also have a couple of other DFA related issues. https://github.com/MegaMek/megamek/issues/2143 https://github.com/MegaMek/megamek/issues/1614

SimonLandmine commented 4 years ago

Here's another example of odd DFA calculation from 47.7 ...

Physical attacks for Hornet HNT-151 ID:43 (SimonLandmine) Attempting death from above on Rifleman RFL-3N ID:40 (Sn) ID:40; needs 5, rolls 9 : - Direct Blow - hits. Defender takes 7 damage (using Punch table). Rifleman RFL-3N ID:40 (Sn) takes 2 damage to RA. 9 Armor remaining. Rifleman RFL-3N ID:40 (Sn) is displaced into hex 2620. Attacker takes 4 damage. Hornet HNT-151 ID:43 (SimonLandmine) takes 4 damage to RL. 2 Armor remaining.

And another from the same battle ...

Physical attacks for Enforcer ENF-4R ID:53 (SimonLandmine) Attempting death from above on Phoenix Hawk PXH-1 ID:35 (Sk) ID:35; needs 6, rolls 10 : - Direct Blow - hits. Defender takes 16 damage (using Rear Punch table). Phoenix Hawk PXH-1 ID:35 (Sk) takes 11 damage to RTR. 11 damage transfers to CTR. Phoenix Hawk PXH-1 ID:35 (Sk) takes 11 damage to CTR. 2 Internal Structure remaining. Critical hit on CT. Roll is (6+3) = 9; 1 location. CRITICAL HIT on Engine. Phoenix Hawk PXH-1 ID:35 (Sk) takes 6 damage to HD. 0 Armor remaining. Pilot of Phoenix Hawk PXH-1 ID:35 (Sk) "Özdemir Kouzouyan" takes 1 damage (1 total hits). Pilot of Phoenix Hawk PXH-1 ID:35 (Sk) "Özdemir Kouzouyan" needs a 3 to stay conscious. Rolls 8 : successful! Phoenix Hawk PXH-1 ID:35 (Sk) takes 1 damage to LA. 1 damage transfers to LTR. Phoenix Hawk PXH-1 ID:35 (Sk) takes 1 damage to LTR. SECTION DESTROYED. Critical hit on LT. Roll is (10+1) = 11; 2 locations. CRITICAL HIT on Jump Jet. Location has no more hittable critical slots. Phoenix Hawk PXH-1 ID:35 (Sk) is displaced into hex 0821. Attacker takes 10 damage. Enforcer ENF-4R ID:53 (SimonLandmine) takes 5 damage to LL. 15 Armor remaining. Enforcer ENF-4R ID:53 (SimonLandmine) takes 5 damage to RL. 15 Armor remaining. Enforcer ENF-4R ID:53 (SimonLandmine) is displaced into hex 0822.

These match the damage allocation pattern mentioned above by @gsparks3. (Also, possibly the first battle in which I've attempted two DFA, let alone landed two!)