Spaces:
Runtime error
Runtime error
from base.attribute import Attribute | |
from qt.scripts.top import Parser, School | |
def refresh_status(existed_buffs, buffs, attribute: Attribute, school: School): | |
for buff in [buff for buff in existed_buffs if buff not in buffs]: | |
existed_buffs.remove(buff) | |
buff_id, buff_level, buff_stack = buff | |
buff = school.buffs[buff_id] | |
buff.buff_level = buff_level | |
for _ in range(buff_stack): | |
attribute, school.skills = (attribute, school.skills) - buff | |
for buff in [buff for buff in buffs if buff not in existed_buffs]: | |
existed_buffs.append(buff) | |
buff_id, buff_level, buff_stack = buff | |
buff = school.buffs[buff_id] | |
buff.buff_level = buff_level | |
for _ in range(buff_stack): | |
attribute, school.skills = (attribute, school.skills) + buff | |
def analyze_details(parser: Parser, attribute: Attribute): | |
existed_buffs = [] | |
for start_time, record in parser.records.items(): | |
for skill, status in record.items(): | |
skill_id, skill_level = skill | |
skill = parser.school.skills[skill_id] | |
skill.skill_level = skill_level | |
for buffs, timeline in status.items(): | |
refresh_status(existed_buffs, buffs, attribute, parser.school) | |
damage, critical_damage, expected_damage = skill(attribute) | |
status[buffs] = { | |
"damage": damage, "critical_damage": critical_damage, "expected_damage": expected_damage, | |
"timeline": [round(t / 1000, 2) for t in timeline], | |
"gradients": analyze_gradients(skill, attribute) | |
} | |
refresh_status(existed_buffs, [], attribute, parser.school) | |
def analyze_gradients(skill, attribute): | |
results = {} | |
for attr, value in attribute.grad_attrs.items(): | |
origin_value = getattr(attribute, attr) | |
setattr(attribute, attr, origin_value + value) | |
_, _, results[attr] = skill(attribute) | |
setattr(attribute, attr, origin_value) | |
return results | |