from typing import Dict from base.skill import Skill, DotSkill, DotConsumeSkill, PhysicalDamage, MagicalDamage, MagicalDotDamage from general.skills import GENERAL_SKILLS SKILLS: Dict[int, Skill | dict] = { 32889: { "skill_class": MagicalDamage, "skill_name": "破", "surplus_cof": 1048576 * (1.2 * 0.33 * 0.33 - 1) }, 32957: { "skill_class": MagicalDamage, "skill_name": "破·虚空", "surplus_cof": 1048576 * (0.55 * 0.7 * 1.33 - 1) }, 15: { "skill_class": PhysicalDamage, "skill_name": "连环双刀", "attack_power_cof": 16, "weapon_damage_cof": 1024, "skill_damage_addition": 205 }, 2920: { "skill_class": MagicalDotDamage, "skill_name": "急曲(DOT)", "damage_base": 100, "attack_power_cof": 114 * 1.1 * 0.9 * 1.1, "interval": 48, "max_stack": 3, "tick": 6 }, 18716: { "skill_class": DotSkill, "skill_name": "急曲", "bind_skill": 2920 }, 6559: { "skill_class": type("Mixing", (MagicalDamage, DotConsumeSkill), {}), "skill_name": "江海凝光", "damage_base": [65, 68, 71, 75, 78, 81, 83, 86] + [e * 0.95 for e in [95, 101, 106, 111, 116, 121, 127, 132, 137, 142, 147, 153, 158, 163, 168, 173, 179, 184, 189, 194, 199, 205, 210, 215]], "damage_rand": [e * 0.1 for e in [54, 59, 64, 69, 75, 80, 85, 90, 95, 101, 106, 111, 116, 121, 127, 132, 137, 142, 147, 153, 158, 163, 168, 173, 179, 184, 189, 194, 199, 205, 210, 215]], "damage_gain": 1 / 2.5, "attack_power_cof": [36 * 1.3 * 1.1] * 9 + [(36 + (i - 9) * 1) * 1.3 * 1.1 for i in range(10, 32)] + [164 * 1.3 * 1.1], "bind_skill": 2920, "tick": 99, "last_dot": False, }, 30524: { "skill_class": MagicalDamage, "skill_name": "剑气长江", "damage_base": [e * 0.2 for e in [21, 76, 80, 81, 84]] + [e * 2 * 0.98 * 0.2 for e in [255, 264, 272, 281, 289, 298, 306, 325, 323, 332, 340, 349, 357, 366, 374, 383, 391, 400, 408, 417, 425, 434, 442]], "damage_rand": [e * 2 * 0.04 * 0.5 for e in [33, 41, 50, 58, 67, 75, 84, 92, 101, 109, 118, 126, 135, 143, 152, 160, 169, 177, 186, 194, 203, 211, 220, 228, 237, 245, 254, 262]], "attack_power_cof": [64 * 1.1 * 1.2 * 1.1 * 1.1 * 1.1 * 1.1 * 1.1] * 9 + [(64 + (i - 9) * 4) * 1.1 * 1.2 * 1.1 * 1.1 * 1.1 * 1.1 * 1.1 for i in range(10, 28)] + [152 * 1.1 * 1.2 * 1.1 * 1.1 * 1.1 * 1.1 * 1.1], }, 2716: { "skill_class": MagicalDamage, "skill_name": "剑破虚空", "damage_base": [e * 0.98 / 2 + 10 for e in [125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 174, 182, 190, 198, 206, 214, 222, 230]], "damage_rand": [e * 0.04 / 2 + 10 for e in [94, 102, 110, 118, 126, 134, 142, 150, 158, 166, 174, 182, 190, 198, 206, 214, 222, 230]], "attack_power_cof": [80 * 1.1 * 1.1 * 1.1] * 9 + [(80 + (i - 9) * 15) * 1.1 * 1.1 * 1.1 for i in range(10, 18)] + [220 * 1.1 * 1.1 * 1.1], }, 6234: { "skill_class": MagicalDamage, "skill_name": "玳弦急曲", "damage_base": [20, 79, 90, 96, 103, 109, 116, 122, 129, 135, 142, 148, 155, 161, 168, 174, 181, 187, 194, 200, 207, 213, 220, 226, 233, 239, 246, 252], "damage_rand": [e * 0.1 for e in [27, 33, 40, 46, 53, 59, 66, 72, 79, 85, 92, 98, 105, 111, 118, 124, 131, 137, 144, 150, 157, 163, 170, 176, 183, 189, 196, 202]], "attack_power_cof": [36 * 0.9 * 0.9 * 1.25 * 1.05] * 9 + [(36 + (i - 9) * 3) * 0.9 * 0.9 * 1.25 * 1.05 for i in range(10, 28)] + [85 * 0.9 * 1.25 * 1.05], }, 6554: { "skill_class": MagicalDamage, "skill_name": "玳弦急曲", "damage_base": [20, 79, 90, 96, 103, 109, 116, 122, 129, 135, 142, 148, 155, 161, 168, 174, 181, 187, 194, 200, 207, 213, 220, 226, 233, 239, 246, 252], "damage_rand": [e * 0.1 for e in [27, 33, 40, 46, 53, 59, 66, 72, 79, 85, 92, 98, 105, 111, 118, 124, 131, 137, 144, 150, 157, 163, 170, 176, 183, 189, 196, 202]], "damage_gain": 0.15, "attack_power_cof": 85 * 0.45 * 0.9 * 1.25 * 1.05, }, 23936: { "skill_class": MagicalDamage, "skill_name": "广陵月", "damage_base": 20, "damage_rand": 17, "attack_power_cof": 16 * 1.1, }, 34642: { "skill_class": MagicalDamage, "skill_name": "流玉", "damage_base": 384 * 0.95, "damage_rand": 384 * 0.1, "attack_power_cof": 250 * 1.1, "skill_shield_gain": -819, }, 34704: { "skill_class": MagicalDamage, "skill_name": "破·流玉", "surplus_cof": 1048576 * (1.2 * 1.1 * 1.25 - 1) }, 37317: { "skill_class": MagicalDamage, "skill_name": "留芳仙姿·剑破", "damage_base": [70, 75, 80, 85, 90, 95, 100, 105, 110, 115], "damage_rand": 5, "attack_power_cof": 175, }, 37318: { "skill_class": MagicalDamage, "skill_name": "留芳仙姿·玳弦", "damage_base": [70, 75, 80, 85, 90, 95, 100, 105, 110, 115], "damage_rand": 5, "attack_power_cof": 30, }, 37319: { "skill_class": MagicalDamage, "skill_name": "留芳仙姿·剑气", "damage_base": [70, 75, 80, 85, 90, 95, 100, 105, 110, 115], "damage_rand": 5, "attack_power_cof": 70, }, 37320: { "skill_class": MagicalDamage, "skill_name": "留芳仙姿·剑影", "damage_base": [70, 75, 80, 85, 90, 95, 100, 105, 110, 115], "damage_rand": 5, "attack_power_cof": 260, }, 33140: { "skill_class": MagicalDamage, "skill_name": "盈袖", "damage_base": [70, 75, 80, 85, 90, 95], "damage_rand": 5, "attack_power_cof": [(400 * (i + 1) + 250) * 0.25 * 0.5 for i in range(6)] }, 30532: { "skill_class": MagicalDamage, "skill_name": "钗燕", "damage_base": [133, 644, 1156, 1667], "damage_rand": 5, "attack_power_cof": 100 * 1.3, }, 34611: { "skill_class": MagicalDamage, "skill_name": "钗燕·明", "damage_base": [70, 75, 80, 85, 90, 95], "damage_rand": 5, "attack_power_cof": 300 * 1.6 * 1.8 * 0.7 * 0.95, }, 24999: { "skill_class": MagicalDamage, "skill_name": "化冰", "damage_base": [20, 79, 90, 96, 103, 109, 116, 122, 129, 135, 142, 148, 155, 161, 168, 174, 181, 187, 194, 200, 207, 213, 220, 226, 233, 239, 246, 252], "damage_rand": [e * 0.1 for e in [27, 33, 40, 46, 53, 59, 66, 72, 79, 85, 92, 98, 105, 111, 118, 124, 131, 137, 144, 150, 157, 163, 170, 176, 183, 189, 196, 202]], "attack_power_cof": 300 * 1.05 * 1.2, }, 34612: { "skill_class": MagicalDamage, "skill_name": "凝华", "damage_base": [70, 75, 80, 85, 90, 95, 100, 105, 110, 115], "damage_rand": 5, "attack_power_cof": [30 * (i + 1) * 0.7 for i in range(10)], }, 35058: { "skill_class": MagicalDamage, "skill_name": "凝华·明", "damage_base": [70, 75, 80, 85, 90, 95, 100, 105, 110, 115], "damage_rand": 5, "attack_power_cof": [370 * (i + 1) * 0.5 * 1.7 * 0.7 * 1.2 / 3 for i in range(10)], }, 25769: { "skill_class": MagicalDamage, "skill_name": "剑破虚空·神兵", "damage_base": 20, "damage_rand": 2, "attack_power_cof": 65 }, 18512: { "skill_class": MagicalDotDamage, "skill_name": "气吞长江(DOT)", "damage_base": 25, "attack_power_cof": 400 * 1.4, "interval": 48, "max_stack": 3, "tick": 10 }, 25757: { "skill_class": DotSkill, "skill_name": "气吞长江", "bind_skill": 18512, } } 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