File size: 8,681 Bytes
c255694
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
from typing import Dict

from base.constant import GLOBAL_DAMAGE_FACTOR
from base.skill import Skill, DotSkill, PhysicalDamage, MagicalDamage, MagicalDotDamage, MagicalPetDamage
from general.skills import GENERAL_SKILLS

SKILLS: Dict[int, Skill | dict] = {
    32738: {
        "skill_class": MagicalDamage,
        "skill_name": ["破", "破", "破", "破·流照", "破·争鸣"],
        "surplus_cof": [
            1048576 * (0.25 * 0.5 * 1.3 * 1.2 * 0.5 * 1.11 * 0.9 - 1),
            1048576 * (0.3 * 0.5 * 1.3 * 1.2 * 0.5 * 1.11 * 0.9 - 1),
            1048576 * (0.36 * 0.5 * 1.3 * 1.2 * 0.5 * 1.11 * 0.9 - 1),
            1048576 * (0.125 * 0.5 * 1.3 * 1.2 * 0.5 * 1.11 * 1.17 - 1),
            1048576 * (0.36 * 0.7 * 1.15 - 1)
        ]
    },
    14063: {
        "skill_class": PhysicalDamage,
        "skill_name": "五音六律",
        "attack_power_cof": 16,
        "weapon_damage_cof": 1024,
    },
    14494: {
        "skill_class": MagicalDamage,
        "skill_name": "阳春白雪",
        "damage_base": [20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 98, 101, 104,
                        107, 110],
        "damage_rand": [5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                        10],
        "damage_gain": 0.7,
        "attack_power_cof": 64 * 1.4,
    },
    15076: {
        "skill_class": MagicalPetDamage,
        "skill_name": "宫",
        "damage_base": [34, 45, 55, 65, 75, 85, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 125, 130, 135, 140,
                        145, 150, 155, 160],
        "damage_rand": [5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 30, 30, 30, 30, 40, 40, 40],
        "attack_power_cof": [80 * 0.2 * 0.85 * 1.1] * 9 +
                            [(80 + (i - 9) * 6) * 0.2 * 0.85 * 1.1 for i in range(10, 25)] +
                            [200 * 0.2 * 0.85 * 1.1],
        "interval": 24
    },
    9357: {
        "skill_class": MagicalDotDamage,
        "skill_name": "商(DOT)",
        "damage_base": 58,
        "attack_power_cof": [48 * 1.1 * 1.05 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05] * 9 +
                            [(48 + (i - 9) * 7) * 1.1 * 1.05 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05 for i in
                             range(10, 25)] +
                            [160 * 1.1 * 1.05 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05],
        "interval": 48
    },
    **{
        skill_id: {
            "skill_class": DotSkill,
            "skill_name": "商",
            "bind_skill": 9357,
            "tick": 6
        } for skill_id in (14287, 17788)
    },
    14311: {
        "skill_class": MagicalDamage,
        "skill_name": "商",
        "damage_base": [e * 0.7 for e in
                        [20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 98, 101, 104,
                         107, 110]],
        "damage_rand": [5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                        10],
        "attack_power_cof": [64 * 1.2 * 1.05 * 1.2 * 1.12 * 1.05] +
                            [64 * 1.2 * 1.05 * 1.2 * 1.12 * 1.5 * 1.05] +
                            [64 * 1.2 * 1.05 * 1.2 * 1.12 * 2 * 1.05],
    },
    9361: {
        "skill_class": MagicalDotDamage,
        "skill_name": "角(DOT)",
        "damage_base": 58,
        "attack_power_cof": [48 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05] * 9 +
                            [(48 + (i - 9) * 8) * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05 for i in
                             range(10, 25)] +
                            [180 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05],
        "interval": 48
    },
    **{
        skill_id: {
            "skill_class": DotSkill,
            "skill_name": "角",
            "bind_skill": 9361,
            "tick": 6
        } for skill_id in (14291, 17792)
    },
    14312: {
        "skill_class": MagicalDamage,
        "skill_name": "角",
        "damage_base": [e * 0.7 for e in
                        [20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 98, 101, 104,
                         107, 110]],
        "damage_rand": [5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                        10],
        "attack_power_cof": [64 * 1.2 * 1.05 * 1.2 * 1.12 * 1.05] +
                            [64 * 1.2 * 1.05 * 1.2 * 1.12 * 1.5 * 1.05] +
                            [64 * 1.2 * 1.05 * 1.2 * 1.12 * 2 * 1.05],
    },
    **{
        skill_id: {
            "skill_class": MagicalDamage,
            "skill_name": "徵",
            "damage_base": [70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160,
                            165,
                            170, 175, 180, 185, 190],
            "damage_rand": [5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 20, 20, 20, 20],
            "attack_power_cof": [40 * 1.2 * 1.09 * 1.65] * 9 +
                                [(40 + (i - 9) * 3) * 1.2 * 1.09 * 1.65 for i in range(10, 25)] +
                                [95 * 1.2 * 1.09 * 1.65],
        } for skill_id in (14227, 18859)
    },
    14100: {
        "skill_class": MagicalDamage,
        "skill_name": "羽",
        "damage_base": [32, 36, 46, 50, 54, 58, 62, 66, 70, 72, 74, 76, 78, 80, 82, 84, 86, 89, 92, 95, 98, 101, 104,
                        107, 110],
        "damage_rand": [5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                        10],
        "damage_gain": 1.3,
        "attack_power_cof": [60 * 1.1 * 1.3 * 1.15 * 1.1 * 1.1 * 1.05 * 1.1] * 9 +
                            [(60 + (i - 9) * 3) * 1.1 * 1.3 * 1.15 * 1.1 * 1.1 * 1.05 * 1.1 for i in range(10, 25)] +
                            [115 * 1.1 * 1.3 * 1.15 * 1.1 * 1.1 * 1.05 * 1.1],
    },
    18860: {
        "skill_class": MagicalDamage,
        "skill_name": "变宫",
        "damage_base": [34, 45, 55, 65, 75, 85, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 125, 130, 135, 140,
                        145, 150, 155, 160],
        "damage_rand": [5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 30, 30, 30, 30, 40, 40, 40],
        "attack_power_cof": [80 * 1.2 * 1.1 * 1.05] * 9 +
                            [80 + (i - 9) * 6 * 1.2 * 1.1 * 1.05 for i in range(10, 25)] +
                            [200 * 1.2 * 1.1 * 1.05],
    },
    32624: {
        "skill_class": MagicalDamage,
        "skill_name": "弦风",
        "damage_base": 40,
        "damage_rand": 2,
        "attack_power_cof": 40 * 1.2 * 1.25,
    },
    30799: {
        "skill_class": MagicalDamage,
        "skill_name": "流照",
        "damage_base": 107,
        "damage_rand": 27,
        "attack_power_cof": 117 * 0.35 * 1.5,
        "skill_shield_gain": -922
    },
    34676: {
        "skill_class": MagicalDamage,
        "skill_name": "知音兴尽",
        "damage_base": 40,
        "damage_rand": 6,
        "attack_power_cof": [(3750 + 125 * (i + 1)) * 0.2 * 10 * 1.2 * 1.15 for i in range(21)] +
                            [2810 * 0.2 * 1.2 * 1.15] * 2 +
                            [3250 * 0.2 * 1.2 * 1.15],
        "global_damage_factor": GLOBAL_DAMAGE_FACTOR(1048576 * (0.25 * 0.5 * 1.3 * 1.2 * 0.5 * 1.11 * 0.9 - 1))
    },
    25781: {
        "skill_class": MagicalDamage,
        "skill_name": "羽·神兵",
        "damage_base": 20,
        "damage_rand": 2,
        "attack_power_cof": 50
    },
    31008: {
        "skill_class": MagicalDamage,
        "skill_name": "宫·神兵",
        "damage_base": 100,
        "damage_rand": 10,
        "attack_power_cof": 200 * 1.2 * 1.1 * 1.05
    },
    31138: {
        "skill_class": MagicalDamage,
        "skill_name": "变宫·神兵",
        "damage_base": 100,
        "damage_rand": 10,
        "attack_power_cof": 200 * 1.2 * 1.1 * 1.05
    },
    23187: {
        "skill_class": MagicalDotDamage,
        "skill_name": "神兵·宫(DOT)",
        "damage_base": 58,
        "attack_power_cof": 360 * 1.1 * 1.05 * 1.05 * 1.05 * 1.35,
        "interval": 48
    },
    31005: {
        "skill_class": DotSkill,
        "skill_name": "神兵·宫",
        "bind_skill": 23187,
        "max_stack": 3,
        "tick": 10
    }
}

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