from typing import Dict from base.constant import DOT_DAMAGE_SCALE, FRAME_PER_SECOND from base.skill import Skill, DotSkill, DotConsumeSkill, PhysicalDamage, PhysicalDotDamage from general.skills import GENERAL_SKILLS SKILLS: Dict[int, Skill | dict] = { 36177: { "skill_class": PhysicalDamage, "skill_name": "破", "surplus_cof": [ 1048576 * (0.3 - 1), 1048576 * (0.3 - 1) ] }, 35894: { "skill_class": PhysicalDamage, "skill_name": "风矢", "attack_power_cof": 16, "weapon_damage_cof": 1024, "skill_damage_addition": 205 }, 35866: { "skill_class": PhysicalDamage, "skill_name": "劲风簇", "damage_base": [35, 70, 105, 140, 157, 175, 193, 210, 228, 245, 263, 280, 298, 315, 333], "damage_rand": 5, "attack_power_cof": [25 * 0.9 * 0.9 * 0.95] * 3 + [(25 + (i - 4) * 10) * 0.9 * 0.9 * 0.95 for i in range(4, 15)] + [175 * 0.9 * 0.9 * 0.95], "weapon_damage_cof": 1024 }, 35987: { "skill_class": PhysicalDamage, "skill_name": "饮羽簇", "damage_base": [77, 154, 321, 308, 347, 385, 424, 462, 501, 539, 578, 616, 655, 693, 732], "damage_rand": [5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10], "attack_power_cof": [66 * 0.9 * 0.9 * 0.95 * 0.9 * 0.95] * 3 + [(66 + (i - 4) * 38) * 0.9 * 0.9 * 0.95 * 0.9 * 0.95 for i in range(4, 15)] + [552 * 0.9 * 0.9 * 0.95 * 0.9 * 0.95], "weapon_damage_cof": 2048 }, 36056: { "skill_class": PhysicalDamage, "skill_name": "践踏", "damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296], "damage_rand": 20, "attack_power_cof": [70 * 1.05] * 2 + [(70 + (i - 3) * 58) * 1.05 for i in range(3, 11)] + [607 * 1.05], "skill_damage_addition": 62 }, 36057: { "skill_class": PhysicalDamage, "skill_name": "重击", "damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296], "damage_rand": 20, "attack_power_cof": [33 * 1.05] * 2 + [(33 + (i - 3) * 26) * 1.05 for i in range(3, 11)] + [276 * 1.05], "skill_damage_addition": 62 }, 36111: { "skill_class": PhysicalDamage, "skill_name": "攻击", "damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296], "damage_rand": 20, "attack_power_cof": [33 * 1.05] * 2 + [(33 + (i - 3) * 26) * 1.05 for i in range(3, 11)] + [276 * 1.05], "skill_damage_addition": 62 }, 36112: { "skill_class": PhysicalDamage, "skill_name": "攻击", "damage_base": [48, 132, 216, 300, 384, 468, 552, 636, 720, 804, 296], "damage_rand": 20, "attack_power_cof": [99 * 1.05] * 2 + [(99 + (i - 3) * 26) * 1.05 for i in range(3, 11)] + [828 * 1.05], "skill_damage_addition": 62 }, 36113: { "skill_class": PhysicalDamage, "skill_name": "攻击", "damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296], "damage_rand": 20, "attack_power_cof": [70 * 1.05] * 2 + [(70 + (i - 3) * 26) * 1.05 for i in range(3, 11)] + [607 * 1.05], "skill_damage_addition": 62 }, 36114: { "skill_class": PhysicalDamage, "skill_name": "攻击", "damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296], "damage_rand": 20, "attack_power_cof": [23 * 1.05] * 2 + [(23 + (i - 3) * 26) * 1.05 for i in range(3, 11)] + [165 * 1.05], "skill_damage_addition": 62 }, 36157: { "skill_class": PhysicalDamage, "skill_name": "标鹄", "damage_base": 30, "damage_rand": 20, "attack_power_cof": 512 * 1.15 * 0.9 * 0.95 }, 26856: { "skill_class": PhysicalDotDamage, "skill_name": "贯穿(DOT)", "damage_base": 32, "attack_power_cof": 215 * 0.7 * 1.15 * 0.9 * 0.9 * 0.9, "interval": FRAME_PER_SECOND * DOT_DAMAGE_SCALE / 4, "max_stack": 6, "tick": 4 }, 35771: { "skill_class": DotSkill, "skill_name": "贯穿", "bind_skill": 26856 }, 36165: { "skill_class": DotConsumeSkill, "skill_name": "贯穿", "bind_skill": 26856, "tick": 3 }, 36453: { "skill_class": PhysicalDamage, "skill_name": "朝仪万汇", "damage_base": 37, "damage_rand": 5, "attack_power_cof": 215 }, 36579: { "skill_class": PhysicalDamage, "skill_name": "劲风簇·神兵", "damage_base": 20, "damage_rand": 2, "attack_power_cof": 60 }, 36580: { "skill_class": PhysicalDamage, "skill_name": "月弦激星", "damage_base": 20, "damage_rand": 2, "attack_power_cof": 390 } } for skill_id, detail in SKILLS.items(): SKILLS[skill_id] = detail.pop('skill_class')(skill_id) for attr, value in detail.items(): setattr(SKILLS[skill_id], attr, value) for skill_id, skill in GENERAL_SKILLS.items(): SKILLS[skill_id] = skill