damage: truncate, handle weird hitbox data

main
Bryce Allen 10 years ago
parent c53d838c56
commit 12f1813d37

@ -3,6 +3,7 @@ from collections import defaultdict
import json
import difflib
import re
import math
from mhapi import skills
from mhapi.model import SharpnessLevel, _break_find
@ -11,13 +12,16 @@ from mhapi.model import SharpnessLevel, _break_find
WEAKPART_WEIGHT = 0.5
def floor(x):
return int(math.floor(x))
def raw_damage(true_raw, sharpness, affinity, monster_hitbox, motion):
"""
Calculate raw damage to a monster part with the given true raw,
sharpness, monster raw weakness, and weapon motion value.
"""
return (true_raw
return floor(true_raw
* SharpnessLevel.raw_modifier(sharpness)
* (1 + (affinity / 400.0))
* motion / 100.0
@ -30,7 +34,7 @@ def element_damage(element, sharpness, monster_ehitbox):
attack, the given sharpness, and the given monster elemental weakness.
Note that this is independent of the motion value of the attack.
"""
return (element / 10.0
return floor(element / 10.0
* SharpnessLevel.element_modifier(sharpness)
* monster_ehitbox / 100.0)
@ -276,7 +280,10 @@ class WeaponMonsterDamage(object):
if self.limit_parts is not None and part not in self.limit_parts:
continue
#print part, alt
if row["cut"] == -1:
continue
hitbox = 0
hitbox_cut = int(row["cut"])
hitbox_impact = int(row["impact"])
@ -572,8 +579,10 @@ class PartDamage(object):
def average(self, break_weight=0.25, rage_weight=0.5):
if self.break_diff():
assert not self.rage_diff()
return self.average_break(break_weight)
avg = self.average_break(break_weight)
if self.rage_diff():
return (self.average_rage(rage_weight) + avg) / 2.0
return avg
else:
return self.average_rage(rage_weight)

Loading…
Cancel
Save