Spaces:
Runtime error
Runtime error
from typing import Dict | |
from base.constant import DOT_DAMAGE_SCALE, FRAME_PER_SECOND | |
from base.skill import Skill, DotSkill, PhysicalDamage, PhysicalDotDamage | |
from general.skills import GENERAL_SKILLS | |
class 横刀断浪流血(Skill): | |
bind_buff: int = -24222 | |
stack: int | |
def record(self, critical, parser): | |
bind_skill = parser.current_school.skills[self.bind_skill] | |
bind_buff = self.bind_buff | |
for level in range(self.stack): | |
parser.clear_target_buff(bind_buff, level + 1) | |
parser.refresh_target_buff(bind_buff, self.stack, 1) | |
parser.current_dot_ticks[self.bind_skill] = bind_skill.tick | |
parser.current_dot_stacks[self.bind_skill] = self.stack | |
parser.current_dot_buffs[self.bind_skill] = parser.current_buffs.copy() | |
SKILLS: Dict[int, Skill | dict] = { | |
33146: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "破", | |
"surplus_cof": 1048576 * (0.48 - 1) | |
}, | |
**{ | |
skill_id: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "云刀", | |
"attack_power_cof": 16, | |
"weapon_damage_cof": 1024 | |
} for skill_id in (32974, 32975) | |
}, | |
32510: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "避实击虚", | |
"damage_base": [35, 42, 45, 50, 55, 60], | |
"damage_rand": 5, | |
"attack_power_cof": [80 * 0.9, 100 * 0.9 * 0.9, 120 * 0.9 * 0.9, 160 * 0.8 * 0.9, 160 * 0.9, 200 * 0.9], | |
"weapon_damage_cof": 1024, | |
}, | |
32246: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "留客雨", | |
"damage_base": [35, 42, 45, 50, 52, 55, 56, 58, 60, 62, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 109, 115, | |
120, 130, 140, 150, 160], | |
"damage_rand": [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, | |
15], | |
"damage_gain": 1.1, | |
"attack_power_cof": [90] * 11 + | |
[(100 + (i - 12) * 5) for i in range(12, 27)] + | |
[200], | |
"weapon_damage_cof": 1024 | |
}, | |
32766: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "触石雨", | |
"damage_base": [180, 200], | |
"damage_rand": [15, 30], | |
"attack_power_cof": [200, 200 * 1.6] | |
}, | |
32149: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "行云势·一", | |
"damage_base": [35, 42, 45, 50, 52, 55, 56, 58, 60, 62, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 109, 115, | |
120, 130, 140, 150, 160, 170, 180], | |
"damage_rand": [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, | |
15, 15, 15], | |
"attack_power_cof": [40 * 1.5] * 12 + | |
[(40 + (i - 12) * 5) * 1.5 for i in range(13, 30)] + | |
[135 * 1.5], | |
"weapon_damage_cof": 1024 | |
}, | |
32150: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "行云势·二", | |
"damage_base": [35, 42, 45, 50, 52, 55, 56, 58, 60, 62, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 109, 115, | |
120, 130, 140, 150, 160, 170, 180], | |
"damage_rand": [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, | |
15, 15, 15], | |
"damage_gain": 1.2, | |
"attack_power_cof": [50 * 1.5] * 12 + | |
[(50 + (i - 12) * 5) * 1.5 for i in range(13, 30)] + | |
[159 * 1.5], | |
"weapon_damage_cof": 2048 | |
}, | |
32151: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "行云势·三", | |
"damage_base": [35, 42, 45, 50, 52, 55, 56, 58, 60, 62, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 109, 115, | |
120, 130, 140, 150, 160, 170, 180], | |
"damage_rand": [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, | |
15, 15, 15], | |
"damage_gain": 1.5, | |
"attack_power_cof": [70 * 1.5 * 1.5] * 12 + | |
[(70 + (i - 12) * 5) * 1.5 * 1.5 for i in range(13, 30)] + | |
[190 * 1.5 * 1.5], | |
"weapon_damage_cof": 2048 | |
}, | |
32154: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "决云势", | |
"damage_base": [107, 120, 132, 144, 157, 55, 56, 58, 60, 62, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 109, | |
115, 120, 130, 140, 150, 160], | |
"damage_rand": [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, | |
15], | |
"damage_gain": 1.25, | |
"attack_power_cof": [50 + i * 15 for i in range(1, 3)] + | |
[80 + i * 20 for i in range(3, 5)] + | |
[188], | |
"weapon_damage_cof": 1024 | |
}, | |
32167: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "断云势", | |
"damage_base": [62, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 109, 115], | |
"damage_rand": [5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15], | |
"damage_gain": 1.5, | |
"attack_power_cof": [(120 + i * 10) * 0.9 for i in range(1, 6)] + | |
[(150 + i * 15) * 0.9 for i in range(6, 14)] + | |
[380 * 0.9], | |
"weapon_damage_cof": 2048 | |
}, | |
32348: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "断云势", | |
"damage_base": [62, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 109, 115], | |
"damage_rand": [5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15], | |
"damage_gain": 1.5 * 0.4, | |
"attack_power_cof": [(120 + i * 10) * 0.9 for i in range(1, 6)] + | |
[(150 + i * 15) * 0.9 for i in range(6, 14)] + | |
[380 * 0.9], | |
"attack_power_cof_gain": 0.4, | |
"weapon_damage_cof": 2048 | |
}, | |
32602: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "沧浪三叠·一", | |
"damage_base": [76, 85, 94, 107, 118, 125, 135, 145, 155, 165, 175, 185, 190, 200, 205, 210, 215, 220, 225, 230, | |
235, 240, 245, 250, 255], | |
"damage_rand": [5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 20, 20, 20, 20, 20, 20], | |
"damage_gain": 0.8, | |
"attack_power_cof": [130] * 11 + | |
[(160 + (i - 12) * 5) for i in range(12, 25)] + | |
[230], | |
"weapon_damage_cof": 2048 | |
}, | |
32603: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "沧浪三叠·二", | |
"damage_base": [76, 85, 94, 107, 118, 125, 135, 145, 155, 165, 175, 185, 190, 200, 205, 210, 215, 220, 225, 230, | |
235, 240, 245, 250, 255], | |
"damage_rand": [5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 20, 20, 20, 20, 20, 20], | |
"damage_gain": 1.05, | |
"attack_power_cof": [155] * 11 + | |
[(185 + (i - 12) * 5) for i in range(12, 25)] + | |
[255], | |
"weapon_damage_cof": 2560 | |
}, | |
32604: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "沧浪三叠·三", | |
"damage_base": [76, 85, 94, 107, 118, 125, 135, 145, 155, 165, 175, 185, 190, 200, 205, 210, 215, 220, 225, 230, | |
235, 240, 245, 250, 255], | |
"damage_rand": [5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 20, 20, 20, 20, 20, 20], | |
"damage_gain": 1.15, | |
"attack_power_cof": [180] * 11 + | |
[(210 + (i - 12) * 5) for i in range(12, 25)] + | |
[290], | |
"weapon_damage_cof": 3072 | |
}, | |
24443: { | |
"skill_class": PhysicalDotDamage, | |
"skill_name": "流血(DOT)", | |
"damage_base": 114, | |
"attack_power_cof": 100, | |
"interval": FRAME_PER_SECOND * DOT_DAMAGE_SCALE / 3, | |
"tick": 3 | |
}, | |
**{ | |
skill_id: { | |
"skill_class": 横刀断浪流血, | |
"skill_name": "流血", | |
"bind_skill": 24443, | |
"stack": i + 1, | |
} for i, skill_id in enumerate([32874, 32873, 32872, 32871, 32870, 32869]) | |
}, | |
32234: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "横云断浪", | |
"damage_base": [547, 588, 629, 670, 711, 752, 793, 834, 875, 916, 957, 998, 1039, 1080, 1121, 1162, 1203], | |
"damage_rand": [e * 0.1 for e in | |
[547, 588, 629, 670, 711, 752, 793, 834, 875, 916, 957, 998, 1039, 1080, 1121, 1162, 1203]], | |
"damage_gain": 0.6, | |
"attack_power_cof": [300 * 0.8] * 5 + | |
[(320 + (i - 6) * 10) * 0.8 for i in range(6, 17)] + | |
[450 * 0.8], | |
"weapon_damage_cof": 3072 | |
}, | |
**{ | |
skill_id: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "孤锋破浪", | |
"damage_base": [90, 98, 110, 130, 150, 170, 190, 210, 230, 250, 270, 290], | |
"damage_rand": [5, 5, 5, 5, 5, 10, 10, 10, 10, 15, 15, 15], | |
"damage_gain": 5, | |
"attack_power_cof": [400 * 0.9 * 0.85 * 0.9 * 1.1] * 4 + | |
[(400 + (i - 5) * 30) * 0.9 * 0.85 * 0.9 * 1.1 for i in range(5, 12)] + | |
[650 * 0.9 * 0.85 * 0.9 * 1.1], | |
"weapon_damage_cof": 3072 | |
} for skill_id in (32235, 32236, 32237, 32238, 32239, 32891, 32892) | |
}, | |
32357: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "驰风八步", | |
"damage_base": [10, 13, 16, 19, 22, 25], | |
"damage_rand": 5, | |
"attack_power_cof": 45, | |
}, | |
36118: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "潋风·携刃", | |
"damage_base": 78, | |
"damage_rand": 10, | |
"attack_power_cof": 150 * 1.1 * 1.25, | |
}, | |
33239: { | |
"skill_class": PhysicalDamage, | |
"skill_name": "行云势·神兵", | |
"damage_base": 20, | |
"damage_rand": 2, | |
"attack_power_cof": 60 | |
}, | |
27820: { | |
"skill_class": PhysicalDotDamage, | |
"skill_name": "斩浪破锋(DOT)", | |
"damage_base": 25, | |
"attack_power_cof": 500, | |
"interval": 48 | |
}, | |
36851: { | |
"skill_class": DotSkill, | |
"skill_name": "斩浪破锋", | |
"bind_skill": 27820, | |
"max_stack": 3, | |
"tick": 6 | |
} | |
} | |
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 | |