Spaces:
Runtime error
Runtime error
ango
commited on
Commit
•
effe13f
1
Parent(s):
8cd632a
5.9 commit
Browse files- base/buff.py +5 -0
- base/skill.py +16 -16
- general/buffs/equipment.py +1 -1
- general/buffs/team.py +13 -0
- general/gains/team.py +11 -5
- general/skills/team.py +7 -1
- parse_new_school.py +1 -1
- schools/bei_ao_jue/skills.py +8 -12
- schools/bing_xin_jue/skills.py +7 -7
- schools/fen_shan_jing/attribute.py +4 -9
- schools/fen_shan_jing/buffs.py +45 -8
- schools/fen_shan_jing/gains.py +11 -9
- schools/fen_shan_jing/recipes.py +47 -15
- schools/fen_shan_jing/skills.py +232 -122
- schools/fen_shan_jing/talents.py +29 -77
- schools/gu_feng_jue/skills.py +14 -13
- schools/gu_feng_jue/talents.py +2 -4
- schools/hua_jian_you/skills.py +14 -19
- schools/ling_hai_jue/skills.py +8 -9
- schools/mo_wen/skills.py +10 -10
- schools/shan_hai_xin_jue/skills.py +8 -8
- schools/shan_hai_xin_jue/talents.py +2 -2
- schools/tai_xu_jian_yi/buffs.py +1 -0
- schools/tai_xu_jian_yi/skills.py +11 -11
- schools/tai_xu_jian_yi/talents.py +2 -2
- schools/tian_luo_gui_dao/buffs.py +6 -6
- schools/tian_luo_gui_dao/skills.py +4 -4
- schools/tian_luo_gui_dao/talents.py +8 -4
- schools/wu_fang/skills.py +4 -4
- schools/wu_fang/talents.py +2 -2
- schools/yi_jin_jing/skills.py +3 -3
- schools/zi_xia_gong/__init__.py +1 -1
- schools/zi_xia_gong/buffs.py +13 -12
- schools/zi_xia_gong/gains.py +1 -1
- schools/zi_xia_gong/skills.py +33 -33
- schools/zi_xia_gong/talents.py +1 -1
- utils/damage.py +0 -1
- utils/parser.py +38 -14
base/buff.py
CHANGED
@@ -15,6 +15,7 @@ class Buff:
|
|
15 |
buff_stack: int = 1
|
16 |
|
17 |
frame_shift: int = 0
|
|
|
18 |
activate: bool = True
|
19 |
|
20 |
max_stack: int = 1
|
@@ -30,6 +31,10 @@ class Buff:
|
|
30 |
if self.gain_attributes is None:
|
31 |
self.gain_attributes = {}
|
32 |
|
|
|
|
|
|
|
|
|
33 |
@property
|
34 |
def buff_name(self):
|
35 |
if not isinstance(self._buff_name, list):
|
|
|
15 |
buff_stack: int = 1
|
16 |
|
17 |
frame_shift: int = 0
|
18 |
+
second_shift: int = 0
|
19 |
activate: bool = True
|
20 |
|
21 |
max_stack: int = 1
|
|
|
31 |
if self.gain_attributes is None:
|
32 |
self.gain_attributes = {}
|
33 |
|
34 |
+
@property
|
35 |
+
def shifted(self):
|
36 |
+
return self.second_shift or self.frame_shift
|
37 |
+
|
38 |
@property
|
39 |
def buff_name(self):
|
40 |
if not isinstance(self._buff_name, list):
|
base/skill.py
CHANGED
@@ -194,12 +194,12 @@ class BuffSkill(Skill):
|
|
194 |
class DotSkill(Skill):
|
195 |
def record(self, critical, parser):
|
196 |
super().record(critical, parser)
|
197 |
-
bind_skill = self.bind_skill
|
198 |
-
if not parser.current_ticks[bind_skill]:
|
199 |
-
parser.current_stacks[bind_skill] = 0
|
200 |
-
parser.current_ticks[bind_skill] =
|
201 |
-
parser.current_stacks[bind_skill] = min(parser.current_stacks[bind_skill] + 1,
|
202 |
-
parser.current_dot_snapshot[bind_skill] = parser.current_player_buffs.copy()
|
203 |
|
204 |
|
205 |
class DotConsumeSkill(Skill):
|
@@ -336,7 +336,7 @@ class MagicalSkill(Skill):
|
|
336 |
return damage, critical_damage, expected_damage, critical_strike
|
337 |
|
338 |
|
339 |
-
class
|
340 |
def __call__(self, attribute: Attribute):
|
341 |
damage = init_result(
|
342 |
self.damage_base, self.damage_rand,
|
@@ -348,12 +348,12 @@ class MixingSkill(Skill):
|
|
348 |
damage = damage_addition_result(damage, attribute.damage_addition + self.skill_damage_addition)
|
349 |
damage = overcome_result(damage, attribute.overcome,
|
350 |
attribute.level_shield_base + attribute.shield_base,
|
351 |
-
attribute.
|
352 |
-
attribute.
|
353 |
attribute.shield_constant)
|
354 |
|
355 |
-
critical_power_gain = attribute.
|
356 |
-
critical_damage = critical_result(damage, attribute.
|
357 |
|
358 |
damage = level_reduction_result(damage, attribute.level_reduction)
|
359 |
critical_damage = level_reduction_result(critical_damage, attribute.level_reduction)
|
@@ -361,9 +361,9 @@ class MixingSkill(Skill):
|
|
361 |
critical_damage = strain_result(critical_damage, attribute.base_strain, attribute.strain_gain)
|
362 |
damage = pve_addition_result(damage, attribute.pve_addition + self.skill_pve_addition)
|
363 |
critical_damage = pve_addition_result(critical_damage, attribute.pve_addition + self.skill_pve_addition)
|
364 |
-
damage = vulnerable_result(damage, attribute.
|
365 |
-
critical_damage = vulnerable_result(critical_damage, attribute.
|
366 |
-
critical_strike = min(1, attribute.
|
367 |
|
368 |
expected_damage = critical_strike * critical_damage + (1 - critical_strike) * damage
|
369 |
|
@@ -386,7 +386,7 @@ class MagicalDamage(MagicalSkill, Damage):
|
|
386 |
return MAGICAL_ATTACK_POWER_COF(super().attack_power_cof + self.interval)
|
387 |
|
388 |
|
389 |
-
class MixingDamage(
|
390 |
@Damage.attack_power_cof.getter
|
391 |
def attack_power_cof(self):
|
392 |
return MAGICAL_ATTACK_POWER_COF(super().attack_power_cof + self.interval)
|
@@ -404,7 +404,7 @@ class MagicalDotDamage(MagicalSkill, DotDamage):
|
|
404 |
return MAGICAL_DOT_ATTACK_POWER_COF(super().attack_power_cof, self.interval)
|
405 |
|
406 |
|
407 |
-
class MixingDotDamage(
|
408 |
@Damage.attack_power_cof.getter
|
409 |
def attack_power_cof(self):
|
410 |
return MAGICAL_DOT_ATTACK_POWER_COF(super().attack_power_cof, self.interval)
|
|
|
194 |
class DotSkill(Skill):
|
195 |
def record(self, critical, parser):
|
196 |
super().record(critical, parser)
|
197 |
+
bind_skill = parser.current_school.skills[self.bind_skill]
|
198 |
+
if not parser.current_ticks[self.bind_skill]:
|
199 |
+
parser.current_stacks[self.bind_skill] = 0
|
200 |
+
parser.current_ticks[self.bind_skill] = bind_skill.tick
|
201 |
+
parser.current_stacks[self.bind_skill] = min(parser.current_stacks[self.bind_skill] + 1, bind_skill.max_stack)
|
202 |
+
parser.current_dot_snapshot[self.bind_skill] = parser.current_player_buffs.copy()
|
203 |
|
204 |
|
205 |
class DotConsumeSkill(Skill):
|
|
|
336 |
return damage, critical_damage, expected_damage, critical_strike
|
337 |
|
338 |
|
339 |
+
class AdaptiveSkill(Skill):
|
340 |
def __call__(self, attribute: Attribute):
|
341 |
damage = init_result(
|
342 |
self.damage_base, self.damage_rand,
|
|
|
348 |
damage = damage_addition_result(damage, attribute.damage_addition + self.skill_damage_addition)
|
349 |
damage = overcome_result(damage, attribute.overcome,
|
350 |
attribute.level_shield_base + attribute.shield_base,
|
351 |
+
attribute.strain_gain + self.skill_shield_gain,
|
352 |
+
attribute.shield_ignore,
|
353 |
attribute.shield_constant)
|
354 |
|
355 |
+
critical_power_gain = attribute.critical_power_gain + self.skill_critical_power
|
356 |
+
critical_damage = critical_result(damage, attribute.base_critical_power, critical_power_gain)
|
357 |
|
358 |
damage = level_reduction_result(damage, attribute.level_reduction)
|
359 |
critical_damage = level_reduction_result(critical_damage, attribute.level_reduction)
|
|
|
361 |
critical_damage = strain_result(critical_damage, attribute.base_strain, attribute.strain_gain)
|
362 |
damage = pve_addition_result(damage, attribute.pve_addition + self.skill_pve_addition)
|
363 |
critical_damage = pve_addition_result(critical_damage, attribute.pve_addition + self.skill_pve_addition)
|
364 |
+
damage = vulnerable_result(damage, attribute.vulnerable)
|
365 |
+
critical_damage = vulnerable_result(critical_damage, attribute.vulnerable)
|
366 |
+
critical_strike = min(1, attribute.critical_strike + self.skill_critical_strike / DECIMAL_SCALE)
|
367 |
|
368 |
expected_damage = critical_strike * critical_damage + (1 - critical_strike) * damage
|
369 |
|
|
|
386 |
return MAGICAL_ATTACK_POWER_COF(super().attack_power_cof + self.interval)
|
387 |
|
388 |
|
389 |
+
class MixingDamage(AdaptiveSkill, Damage):
|
390 |
@Damage.attack_power_cof.getter
|
391 |
def attack_power_cof(self):
|
392 |
return MAGICAL_ATTACK_POWER_COF(super().attack_power_cof + self.interval)
|
|
|
404 |
return MAGICAL_DOT_ATTACK_POWER_COF(super().attack_power_cof, self.interval)
|
405 |
|
406 |
|
407 |
+
class MixingDotDamage(AdaptiveSkill, DotDamage):
|
408 |
@Damage.attack_power_cof.getter
|
409 |
def attack_power_cof(self):
|
410 |
return MAGICAL_DOT_ATTACK_POWER_COF(super().attack_power_cof, self.interval)
|
general/buffs/equipment.py
CHANGED
@@ -2,7 +2,7 @@ from base.buff import Buff
|
|
2 |
|
3 |
GENERAL_BUFFS = {
|
4 |
15455: {
|
5 |
-
"buff_name": "
|
6 |
"gain_attributes": {
|
7 |
"all_damage_addition": [10, 51]
|
8 |
}
|
|
|
2 |
|
3 |
GENERAL_BUFFS = {
|
4 |
15455: {
|
5 |
+
"buff_name": "伤害波动",
|
6 |
"gain_attributes": {
|
7 |
"all_damage_addition": [10, 51]
|
8 |
}
|
general/buffs/team.py
CHANGED
@@ -1,6 +1,13 @@
|
|
1 |
from base.buff import Buff
|
2 |
|
3 |
GENERAL_BUFFS = {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
20938: {
|
5 |
"buff_name": "左旋右转",
|
6 |
"gain_attributes": {
|
@@ -13,6 +20,12 @@ GENERAL_BUFFS = {
|
|
13 |
"all_damage_addition": 154
|
14 |
}
|
15 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
23107: {
|
17 |
"buff_name": "号令三军",
|
18 |
"gain_attributes": {
|
|
|
1 |
from base.buff import Buff
|
2 |
|
3 |
GENERAL_BUFFS = {
|
4 |
+
15413: {
|
5 |
+
"buff_name": "基础攻击",
|
6 |
+
"gain_attributes": {
|
7 |
+
"physical_attack_power_base": [0] * 8 + [371, 450, 495, 549],
|
8 |
+
"magical_attack_power_base": [0] * 8 + [442, 538, 591, 655]
|
9 |
+
}
|
10 |
+
},
|
11 |
20938: {
|
12 |
"buff_name": "左旋右转",
|
13 |
"gain_attributes": {
|
|
|
20 |
"all_damage_addition": 154
|
21 |
}
|
22 |
},
|
23 |
+
3465: {
|
24 |
+
"buff_name": "破甲",
|
25 |
+
"gain_attributes": {
|
26 |
+
"physical_shield_gain": -102
|
27 |
+
}
|
28 |
+
},
|
29 |
23107: {
|
30 |
"buff_name": "号令三军",
|
31 |
"gain_attributes": {
|
general/gains/team.py
CHANGED
@@ -3,16 +3,27 @@ from typing import Dict
|
|
3 |
from base.attribute import Attribute
|
4 |
from base.buff import Buff
|
5 |
from base.gain import Gain
|
|
|
6 |
from general.buffs.team import GENERAL_BUFFS
|
|
|
7 |
|
8 |
|
9 |
class RealTeamGain(Gain):
|
|
|
10 |
buff_ids = list(GENERAL_BUFFS)
|
11 |
|
|
|
|
|
|
|
|
|
12 |
def add_buffs(self, buffs: Dict[int, Buff]):
|
13 |
for buff_id in self.buff_ids:
|
14 |
buffs[buff_id].activate = True
|
15 |
|
|
|
|
|
|
|
|
|
16 |
def sub_buffs(self, buffs: Dict[int, Buff]):
|
17 |
for buff_id in self.buff_ids:
|
18 |
buffs[buff_id].activate = False
|
@@ -180,10 +191,6 @@ class 疏狂(TeamGain):
|
|
180 |
""" 药宗 """
|
181 |
|
182 |
|
183 |
-
class 飘黄:
|
184 |
-
pass
|
185 |
-
|
186 |
-
|
187 |
class 配伍(TeamGain):
|
188 |
gain_attributes = {"all_major_gain": 10 * 5}
|
189 |
|
@@ -246,6 +253,5 @@ TEAM_GAINS = {
|
|
246 |
|
247 |
"疏狂": 疏狂,
|
248 |
|
249 |
-
"飘黄": 飘黄,
|
250 |
"配伍": 配伍,
|
251 |
}
|
|
|
3 |
from base.attribute import Attribute
|
4 |
from base.buff import Buff
|
5 |
from base.gain import Gain
|
6 |
+
from base.skill import Skill
|
7 |
from general.buffs.team import GENERAL_BUFFS
|
8 |
+
from general.skills.team import GENERAL_SKILLS
|
9 |
|
10 |
|
11 |
class RealTeamGain(Gain):
|
12 |
+
skill_ids = list(GENERAL_SKILLS)
|
13 |
buff_ids = list(GENERAL_BUFFS)
|
14 |
|
15 |
+
def add_skills(self, skills: Dict[int, Skill]):
|
16 |
+
for skill_id in self.skill_ids:
|
17 |
+
skills[skill_id].activate = True
|
18 |
+
|
19 |
def add_buffs(self, buffs: Dict[int, Buff]):
|
20 |
for buff_id in self.buff_ids:
|
21 |
buffs[buff_id].activate = True
|
22 |
|
23 |
+
def sub_skills(self, skills: Dict[int, Skill]):
|
24 |
+
for skill_id in self.skill_ids:
|
25 |
+
skills[skill_id].activate = False
|
26 |
+
|
27 |
def sub_buffs(self, buffs: Dict[int, Buff]):
|
28 |
for buff_id in self.buff_ids:
|
29 |
buffs[buff_id].activate = False
|
|
|
191 |
""" 药宗 """
|
192 |
|
193 |
|
|
|
|
|
|
|
|
|
194 |
class 配伍(TeamGain):
|
195 |
gain_attributes = {"all_major_gain": 10 * 5}
|
196 |
|
|
|
253 |
|
254 |
"疏狂": 疏狂,
|
255 |
|
|
|
256 |
"配伍": 配伍,
|
257 |
}
|
general/skills/team.py
CHANGED
@@ -1,8 +1,14 @@
|
|
1 |
from typing import Dict
|
2 |
|
3 |
-
from base.skill import PhysicalDamage, MagicalDamage, Skill, PureDamage
|
4 |
|
5 |
GENERAL_SKILLS: Dict[int, Skill | dict] = {
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
29535: {
|
7 |
"skill_class": MagicalDamage,
|
8 |
"skill_name": "逐云寒蕊",
|
|
|
1 |
from typing import Dict
|
2 |
|
3 |
+
from base.skill import PhysicalDamage, MagicalDamage, Skill, PureDamage, BuffSkill
|
4 |
|
5 |
GENERAL_SKILLS: Dict[int, Skill | dict] = {
|
6 |
+
13778: {
|
7 |
+
"skill_class": BuffSkill,
|
8 |
+
"skill_name": "乘龙箭",
|
9 |
+
"bind_buff": 3465,
|
10 |
+
"duration": 128
|
11 |
+
},
|
12 |
29535: {
|
13 |
"skill_class": MagicalDamage,
|
14 |
"skill_name": "逐云寒蕊",
|
parse_new_school.py
CHANGED
@@ -59,4 +59,4 @@ class Parser:
|
|
59 |
|
60 |
if __name__ == '__main__':
|
61 |
parser = Parser()
|
62 |
-
parser(r"
|
|
|
59 |
|
60 |
if __name__ == '__main__':
|
61 |
parser = Parser()
|
62 |
+
parser(r"qi_chun.jcl")
|
schools/bei_ao_jue/skills.py
CHANGED
@@ -26,11 +26,9 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
26 |
skill_id: {
|
27 |
"skill_class": PhysicalDamage,
|
28 |
"skill_name": "雷走风切",
|
29 |
-
"damage_base":
|
30 |
-
"damage_rand":
|
31 |
-
"attack_power_cof":
|
32 |
-
[(16 + (i - 1) * 17) * 0.8 * 0.7 for i in range(2, 10)] +
|
33 |
-
[224 * 0.8 * 0.7],
|
34 |
} for skill_id in (16599, 16631)
|
35 |
},
|
36 |
11447: {
|
@@ -40,13 +38,13 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
40 |
"attack_power_cof": [50] +
|
41 |
[50 + (i - 1) * 25 for i in range(2, 10)] +
|
42 |
[280],
|
43 |
-
"interval": 48
|
|
|
44 |
},
|
45 |
17060: {
|
46 |
"skill_class": DotSkill,
|
47 |
"skill_name": "闹须弥",
|
48 |
"bind_skill": 11447,
|
49 |
-
"tick": 8
|
50 |
},
|
51 |
16933: {
|
52 |
"skill_class": PhysicalDamage,
|
@@ -270,7 +268,6 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
270 |
"attack_power_cof": [60 * 1.45 * 1.1 * 0.7] +
|
271 |
[(60 + (i - 1) * 10) * 1.45 * 1.1 * 0.7 for i in range(2, 10)] +
|
272 |
[160 * 1.45 * 0.9 * 1.1 * 0.7],
|
273 |
-
# "weapon_damage_cof": 1024 * 1.45 * 0.25
|
274 |
},
|
275 |
37458: {
|
276 |
"skill_class": PhysicalDamage,
|
@@ -291,15 +288,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
291 |
"skill_name": "背水沉舟(DOT)",
|
292 |
"damage_base": 25,
|
293 |
"attack_power_cof": 380,
|
294 |
-
"interval": 48
|
295 |
-
|
|
|
296 |
},
|
297 |
26934: {
|
298 |
"skill_class": DotSkill,
|
299 |
"skill_name": "背水沉舟",
|
300 |
"bind_skill": 19555,
|
301 |
-
"max_stack": 3,
|
302 |
-
"tick": 6
|
303 |
}
|
304 |
}
|
305 |
|
|
|
26 |
skill_id: {
|
27 |
"skill_class": PhysicalDamage,
|
28 |
"skill_name": "雷走风切",
|
29 |
+
"damage_base": 175,
|
30 |
+
"damage_rand": 15,
|
31 |
+
"attack_power_cof": 224 * 0.8 * 0.7,
|
|
|
|
|
32 |
} for skill_id in (16599, 16631)
|
33 |
},
|
34 |
11447: {
|
|
|
38 |
"attack_power_cof": [50] +
|
39 |
[50 + (i - 1) * 25 for i in range(2, 10)] +
|
40 |
[280],
|
41 |
+
"interval": 48,
|
42 |
+
"tick": 8
|
43 |
},
|
44 |
17060: {
|
45 |
"skill_class": DotSkill,
|
46 |
"skill_name": "闹须弥",
|
47 |
"bind_skill": 11447,
|
|
|
48 |
},
|
49 |
16933: {
|
50 |
"skill_class": PhysicalDamage,
|
|
|
268 |
"attack_power_cof": [60 * 1.45 * 1.1 * 0.7] +
|
269 |
[(60 + (i - 1) * 10) * 1.45 * 1.1 * 0.7 for i in range(2, 10)] +
|
270 |
[160 * 1.45 * 0.9 * 1.1 * 0.7],
|
|
|
271 |
},
|
272 |
37458: {
|
273 |
"skill_class": PhysicalDamage,
|
|
|
288 |
"skill_name": "背水沉舟(DOT)",
|
289 |
"damage_base": 25,
|
290 |
"attack_power_cof": 380,
|
291 |
+
"interval": 48,
|
292 |
+
"max_stack": 3,
|
293 |
+
"tick": 6
|
294 |
},
|
295 |
26934: {
|
296 |
"skill_class": DotSkill,
|
297 |
"skill_name": "背水沉舟",
|
298 |
"bind_skill": 19555,
|
|
|
|
|
299 |
}
|
300 |
}
|
301 |
|
schools/bing_xin_jue/skills.py
CHANGED
@@ -26,14 +26,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
26 |
"skill_name": "急曲(DOT)",
|
27 |
"damage_base": 100,
|
28 |
"attack_power_cof": 114 * 1.1 * 0.9 * 1.1,
|
29 |
-
"interval": 48
|
|
|
|
|
30 |
},
|
31 |
18716: {
|
32 |
"skill_class": DotSkill,
|
33 |
"skill_name": "急曲",
|
34 |
-
"bind_skill": 2920
|
35 |
-
"max_stack": 3,
|
36 |
-
"tick": 6
|
37 |
},
|
38 |
6559: {
|
39 |
"skill_class": type("Mixing", (MagicalDamage, DotConsumeSkill), {}),
|
@@ -206,14 +206,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
206 |
"skill_name": "气吞长江(DOT)",
|
207 |
"damage_base": 25,
|
208 |
"attack_power_cof": 400 * 1.4,
|
209 |
-
"interval": 48
|
|
|
|
|
210 |
},
|
211 |
25757: {
|
212 |
"skill_class": DotSkill,
|
213 |
"skill_name": "气吞长江",
|
214 |
"bind_skill": 18512,
|
215 |
-
"max_stack": 3,
|
216 |
-
"tick": 10
|
217 |
}
|
218 |
}
|
219 |
|
|
|
26 |
"skill_name": "急曲(DOT)",
|
27 |
"damage_base": 100,
|
28 |
"attack_power_cof": 114 * 1.1 * 0.9 * 1.1,
|
29 |
+
"interval": 48,
|
30 |
+
"max_stack": 3,
|
31 |
+
"tick": 6
|
32 |
},
|
33 |
18716: {
|
34 |
"skill_class": DotSkill,
|
35 |
"skill_name": "急曲",
|
36 |
+
"bind_skill": 2920
|
|
|
|
|
37 |
},
|
38 |
6559: {
|
39 |
"skill_class": type("Mixing", (MagicalDamage, DotConsumeSkill), {}),
|
|
|
206 |
"skill_name": "气吞长江(DOT)",
|
207 |
"damage_base": 25,
|
208 |
"attack_power_cof": 400 * 1.4,
|
209 |
+
"interval": 48,
|
210 |
+
"max_stack": 3,
|
211 |
+
"tick": 10
|
212 |
},
|
213 |
25757: {
|
214 |
"skill_class": DotSkill,
|
215 |
"skill_name": "气吞长江",
|
216 |
"bind_skill": 18512,
|
|
|
|
|
217 |
}
|
218 |
}
|
219 |
|
schools/fen_shan_jing/attribute.py
CHANGED
@@ -3,19 +3,14 @@ from base.constant import *
|
|
3 |
|
4 |
|
5 |
class FenShanJing(PhysicalAttribute):
|
6 |
-
AGILITY_TO_ATTACK_POWER =
|
7 |
-
AGILITY_TO_CRITICAL_STRIKE = 594 / BINARY_SCALE
|
8 |
|
9 |
def __init__(self):
|
10 |
super().__init__()
|
11 |
-
self.physical_attack_power_base +=
|
12 |
-
self.
|
13 |
-
self.pve_addition +=
|
14 |
|
15 |
@property
|
16 |
def extra_physical_attack_power(self):
|
17 |
return int(self.agility * self.AGILITY_TO_ATTACK_POWER)
|
18 |
-
|
19 |
-
@property
|
20 |
-
def extra_physical_critical_strike(self):
|
21 |
-
return int(self.agility * self.AGILITY_TO_CRITICAL_STRIKE)
|
|
|
3 |
|
4 |
|
5 |
class FenShanJing(PhysicalAttribute):
|
6 |
+
AGILITY_TO_ATTACK_POWER = 1751 / BINARY_SCALE
|
|
|
7 |
|
8 |
def __init__(self):
|
9 |
super().__init__()
|
10 |
+
self.physical_attack_power_base += 3449
|
11 |
+
self.physical_overcome_base += 1526
|
12 |
+
self.pve_addition += 92
|
13 |
|
14 |
@property
|
15 |
def extra_physical_attack_power(self):
|
16 |
return int(self.agility * self.AGILITY_TO_ATTACK_POWER)
|
|
|
|
|
|
|
|
schools/fen_shan_jing/buffs.py
CHANGED
@@ -4,27 +4,64 @@ from base.buff import Buff
|
|
4 |
from general.buffs import GENERAL_BUFFS
|
5 |
|
6 |
BUFFS: Dict[int, Buff | dict] = {
|
7 |
-
|
8 |
-
"buff_name": "
|
9 |
"activate": False,
|
10 |
"gain_attributes": {
|
11 |
"physical_critical_strike_gain": 400,
|
12 |
"physical_critical_power_gain": 41
|
13 |
}
|
14 |
},
|
15 |
-
|
16 |
-
"buff_name": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
"gain_attributes": {
|
18 |
-
"all_damage_addition":
|
19 |
}
|
20 |
},
|
21 |
-
|
22 |
-
"buff_name": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
"gain_attributes": {
|
24 |
-
"all_shield_ignore": 205,
|
25 |
"physical_attack_power_gain": 102
|
26 |
}
|
27 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
}
|
29 |
|
30 |
for buff_id, detail in BUFFS.items():
|
|
|
4 |
from general.buffs import GENERAL_BUFFS
|
5 |
|
6 |
BUFFS: Dict[int, Buff | dict] = {
|
7 |
+
1428: {
|
8 |
+
"buff_name": "军啸",
|
9 |
"activate": False,
|
10 |
"gain_attributes": {
|
11 |
"physical_critical_strike_gain": 400,
|
12 |
"physical_critical_power_gain": 41
|
13 |
}
|
14 |
},
|
15 |
+
9052: {
|
16 |
+
"buff_name": "绝刀",
|
17 |
+
"gain_skills": {
|
18 |
+
13075: {
|
19 |
+
"skill_damage_addition": [205, 410, 614, 819] * 2
|
20 |
+
}
|
21 |
+
}
|
22 |
+
},
|
23 |
+
8244: {
|
24 |
+
"buff_name": "血怒",
|
25 |
+
"gain_attributes": {
|
26 |
+
"physical_attack_power_gain": 102
|
27 |
+
}
|
28 |
+
},
|
29 |
+
8627: {
|
30 |
+
"buff_name": "刀魂",
|
31 |
+
"gain_attributes": {
|
32 |
+
"physical_attack_power_gain": 154
|
33 |
+
}
|
34 |
+
},
|
35 |
+
17176: {
|
36 |
+
"buff_name": "分野",
|
37 |
"gain_attributes": {
|
38 |
+
"all_damage_addition": 51
|
39 |
}
|
40 |
},
|
41 |
+
8267: {
|
42 |
+
"buff_name": "恋战",
|
43 |
+
"gain_attributes": {
|
44 |
+
"physical_critical_strike_gain": 300,
|
45 |
+
}
|
46 |
+
},
|
47 |
+
14309: {
|
48 |
+
"buff_name": "锋鸣",
|
49 |
+
"gain_attributes": {
|
50 |
+
"physical_overcome_gain": 154
|
51 |
+
}
|
52 |
+
},
|
53 |
+
27161: {
|
54 |
+
"buff_name": "血怒·惊涌",
|
55 |
"gain_attributes": {
|
|
|
56 |
"physical_attack_power_gain": 102
|
57 |
}
|
58 |
},
|
59 |
+
9889: {
|
60 |
+
"buff_name": "蔑视",
|
61 |
+
"gain_attributes": {
|
62 |
+
"all_shield_ignore": 512
|
63 |
+
}
|
64 |
+
},
|
65 |
}
|
66 |
|
67 |
for buff_id, detail in BUFFS.items():
|
schools/fen_shan_jing/gains.py
CHANGED
@@ -4,14 +4,16 @@ from base.gain import Gain
|
|
4 |
|
5 |
|
6 |
GAINS = {
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
|
|
|
|
16 |
**EQUIPMENT_GAINS,
|
17 |
}
|
|
|
4 |
|
5 |
|
6 |
GAINS = {
|
7 |
+
1923: CriticalSet(1428),
|
8 |
+
1932: damage_addition_recipe([13075], 102),
|
9 |
+
1933: damage_addition_recipe([19409], 102),
|
10 |
+
1937: damage_addition_recipe([13463], 51),
|
11 |
+
1938: damage_addition_recipe([13092], 51),
|
12 |
+
1934: critical_strike_recipe([13044], 500),
|
13 |
+
1936: critical_strike_recipe([13092, 8249], 500),
|
14 |
+
2408: Gain(),
|
15 |
+
1940: Gain(),
|
16 |
+
17447: Gain(),
|
17 |
+
17448: Gain(),
|
18 |
**EQUIPMENT_GAINS,
|
19 |
}
|
schools/fen_shan_jing/recipes.py
CHANGED
@@ -1,26 +1,58 @@
|
|
1 |
from typing import Dict, List
|
2 |
|
3 |
from base.gain import Gain
|
4 |
-
from base.recipe import damage_addition_recipe, critical_strike_recipe
|
5 |
-
|
6 |
|
7 |
RECIPE_GAINS: Dict[str, Dict[str, Gain]] = {
|
8 |
-
"
|
9 |
-
"
|
10 |
-
"
|
11 |
-
"3
|
12 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
},
|
14 |
-
"
|
15 |
-
"
|
16 |
-
"
|
17 |
-
"3
|
18 |
-
"
|
19 |
-
"2%伤害": damage_addition_recipe([35987], 21)
|
20 |
},
|
21 |
}
|
22 |
|
23 |
RECIPES: Dict[str, List[str]] = {
|
24 |
-
"
|
25 |
-
"
|
|
|
|
|
|
|
|
|
26 |
}
|
|
|
1 |
from typing import Dict, List
|
2 |
|
3 |
from base.gain import Gain
|
4 |
+
from base.recipe import damage_addition_recipe, critical_strike_recipe
|
|
|
5 |
|
6 |
RECIPE_GAINS: Dict[str, Dict[str, Gain]] = {
|
7 |
+
"盾刀": {
|
8 |
+
"5%伤害": damage_addition_recipe([13044], 51),
|
9 |
+
"4%伤害": damage_addition_recipe([13044], 41),
|
10 |
+
"3%伤害": damage_addition_recipe([13044], 31),
|
11 |
+
"4%会心": critical_strike_recipe([13044], 400),
|
12 |
+
"3%会心": critical_strike_recipe([13044], 300),
|
13 |
+
"2%会心": critical_strike_recipe([13044], 200),
|
14 |
+
},
|
15 |
+
"盾压": {
|
16 |
+
"5%伤害": damage_addition_recipe([19409], 51),
|
17 |
+
"4%伤害": damage_addition_recipe([19409], 41),
|
18 |
+
"4%会心": critical_strike_recipe([19409], 400),
|
19 |
+
"3%会心": critical_strike_recipe([19409], 300),
|
20 |
+
},
|
21 |
+
"劫刀": {
|
22 |
+
"5%伤害": damage_addition_recipe([28479], 51),
|
23 |
+
"4%伤害": damage_addition_recipe([28479], 41),
|
24 |
+
"3%伤害": damage_addition_recipe([28479], 31),
|
25 |
+
"4%会心": critical_strike_recipe([28479], 400),
|
26 |
+
"3%会心": critical_strike_recipe([28479], 300),
|
27 |
+
"2%会心": critical_strike_recipe([28479], 200),
|
28 |
+
},
|
29 |
+
"斩刀": {
|
30 |
+
"5%伤害": damage_addition_recipe([13092], 41),
|
31 |
+
"4%伤害": damage_addition_recipe([13092], 31),
|
32 |
+
"3%伤害": damage_addition_recipe([13092], 21),
|
33 |
+
"4%会心": critical_strike_recipe([13092, 8249], 400),
|
34 |
+
"3%会心": critical_strike_recipe([13092, 8249], 300),
|
35 |
+
"2%会心": critical_strike_recipe([13092, 8249], 200),
|
36 |
+
},
|
37 |
+
"绝刀": {
|
38 |
+
"5%伤害": damage_addition_recipe([13075], 51),
|
39 |
+
"4%伤害": damage_addition_recipe([13075], 41),
|
40 |
+
"4%会心": critical_strike_recipe([13075], 400),
|
41 |
+
"3%会心": critical_strike_recipe([13075], 300),
|
42 |
},
|
43 |
+
"盾飞": {
|
44 |
+
"4%伤害": damage_addition_recipe([13463], 41),
|
45 |
+
"3%伤害": damage_addition_recipe([13463], 31),
|
46 |
+
"3%会心": critical_strike_recipe([13463], 300),
|
47 |
+
"2%会心": critical_strike_recipe([13463], 200),
|
|
|
48 |
},
|
49 |
}
|
50 |
|
51 |
RECIPES: Dict[str, List[str]] = {
|
52 |
+
"盾刀": ["5%伤害", "4%伤害", "4%会心", "3%伤害", "3%会心", "2%会心"],
|
53 |
+
"盾压": ["5%伤害", "4%伤害", "4%会心", "3%会心"],
|
54 |
+
"劫刀": ["4%伤害", "4%会心", "3%伤害", "3%会心", "2%伤害", "2%会心"],
|
55 |
+
"斩刀": ["5%伤害", "4%伤害", "4%会心", "3%伤害", "3%会心", "2%会心"],
|
56 |
+
"绝刀": ["5%伤害", "4%伤害", "4%会心", "3%会心"],
|
57 |
+
"盾飞": ["4%伤害", "3%伤害", "3%会心", "2%会心"],
|
58 |
}
|
schools/fen_shan_jing/skills.py
CHANGED
@@ -1,152 +1,262 @@
|
|
1 |
from typing import Dict
|
2 |
|
3 |
-
from base.constant import DOT_DAMAGE_SCALE, FRAME_PER_SECOND
|
4 |
from base.skill import Skill, DotSkill, DotConsumeSkill, PhysicalDamage, PhysicalDotDamage
|
5 |
from general.skills import GENERAL_SKILLS
|
6 |
|
7 |
SKILLS: Dict[int, Skill | dict] = {
|
8 |
-
|
9 |
"skill_class": PhysicalDamage,
|
10 |
"skill_name": "破",
|
11 |
"surplus_cof": [
|
12 |
-
1048576 * (0.
|
13 |
-
1048576 * (0.
|
|
|
|
|
|
|
14 |
]
|
15 |
},
|
16 |
-
|
17 |
"skill_class": PhysicalDamage,
|
18 |
-
"skill_name": "
|
19 |
"attack_power_cof": 16,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
"weapon_damage_cof": 1024,
|
21 |
-
"skill_damage_addition": 205
|
22 |
},
|
23 |
-
|
24 |
"skill_class": PhysicalDamage,
|
25 |
-
"skill_name": "
|
26 |
-
"damage_base": [35,
|
27 |
-
|
28 |
-
"
|
29 |
-
|
30 |
-
|
31 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
},
|
33 |
-
|
34 |
-
"skill_class": PhysicalDamage,
|
35 |
-
"skill_name": "
|
36 |
-
"damage_base": [
|
37 |
-
|
38 |
-
"
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
"damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296],
|
47 |
-
"damage_rand": 20,
|
48 |
-
"attack_power_cof": [70 * 1.05] * 2 +
|
49 |
-
[(70 + (i - 3) * 58) * 1.05 for i in range(3, 11)] +
|
50 |
-
[607 * 1.05],
|
51 |
-
"skill_damage_addition": 62
|
52 |
-
},
|
53 |
-
36057: {
|
54 |
-
"skill_class": PhysicalDamage,
|
55 |
-
"skill_name": "重击",
|
56 |
-
"damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296],
|
57 |
-
"damage_rand": 20,
|
58 |
-
"attack_power_cof": [33 * 1.05] * 2 +
|
59 |
-
[(33 + (i - 3) * 26) * 1.05 for i in range(3, 11)] +
|
60 |
-
[276 * 1.05],
|
61 |
-
"skill_damage_addition": 62
|
62 |
-
},
|
63 |
-
36111: {
|
64 |
-
"skill_class": PhysicalDamage,
|
65 |
-
"skill_name": "攻击",
|
66 |
-
"damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296],
|
67 |
-
"damage_rand": 20,
|
68 |
-
"attack_power_cof": [33 * 1.05] * 2 +
|
69 |
-
[(33 + (i - 3) * 26) * 1.05 for i in range(3, 11)] +
|
70 |
-
[276 * 1.05],
|
71 |
-
"skill_damage_addition": 62
|
72 |
-
},
|
73 |
-
36112: {
|
74 |
-
"skill_class": PhysicalDamage,
|
75 |
-
"skill_name": "攻击",
|
76 |
-
"damage_base": [48, 132, 216, 300, 384, 468, 552, 636, 720, 804, 296],
|
77 |
-
"damage_rand": 20,
|
78 |
-
"attack_power_cof": [99 * 1.05] * 2 +
|
79 |
-
[(99 + (i - 3) * 26) * 1.05 for i in range(3, 11)] +
|
80 |
-
[828 * 1.05],
|
81 |
-
"skill_damage_addition": 62
|
82 |
-
},
|
83 |
-
36113: {
|
84 |
-
"skill_class": PhysicalDamage,
|
85 |
-
"skill_name": "攻击",
|
86 |
-
"damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296],
|
87 |
-
"damage_rand": 20,
|
88 |
-
"attack_power_cof": [70 * 1.05] * 2 +
|
89 |
-
[(70 + (i - 3) * 26) * 1.05 for i in range(3, 11)] +
|
90 |
-
[607 * 1.05],
|
91 |
-
"skill_damage_addition": 62
|
92 |
-
},
|
93 |
-
36114: {
|
94 |
-
"skill_class": PhysicalDamage,
|
95 |
-
"skill_name": "攻击",
|
96 |
-
"damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296],
|
97 |
-
"damage_rand": 20,
|
98 |
-
"attack_power_cof": [23 * 1.05] * 2 +
|
99 |
-
[(23 + (i - 3) * 26) * 1.05 for i in range(3, 11)] +
|
100 |
-
[165 * 1.05],
|
101 |
-
"skill_damage_addition": 62
|
102 |
-
},
|
103 |
-
36157: {
|
104 |
-
"skill_class": PhysicalDamage,
|
105 |
-
"skill_name": "标鹄",
|
106 |
-
"damage_base": 30,
|
107 |
-
"damage_rand": 20,
|
108 |
-
"attack_power_cof": 512 * 1.15 * 0.9 * 0.95
|
109 |
-
},
|
110 |
-
26856: {
|
111 |
"skill_class": PhysicalDotDamage,
|
112 |
-
"skill_name": "
|
113 |
-
"damage_base":
|
114 |
-
"attack_power_cof":
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
"
|
119 |
-
|
120 |
-
|
121 |
-
"tick": 3
|
122 |
-
},
|
123 |
-
35771: {
|
124 |
"skill_class": DotSkill,
|
125 |
-
"skill_name": "
|
126 |
-
"bind_skill":
|
127 |
-
|
128 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
},
|
130 |
-
|
131 |
"skill_class": PhysicalDamage,
|
132 |
-
"skill_name": "
|
133 |
-
"damage_base":
|
134 |
-
|
135 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
},
|
137 |
-
|
138 |
"skill_class": PhysicalDamage,
|
139 |
-
"skill_name": "
|
140 |
-
"damage_base":
|
141 |
-
|
142 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
143 |
},
|
144 |
-
|
145 |
"skill_class": PhysicalDamage,
|
146 |
-
"skill_name": "
|
147 |
"damage_base": 20,
|
148 |
"damage_rand": 2,
|
149 |
-
"attack_power_cof":
|
150 |
}
|
151 |
}
|
152 |
|
|
|
1 |
from typing import Dict
|
2 |
|
|
|
3 |
from base.skill import Skill, DotSkill, DotConsumeSkill, PhysicalDamage, PhysicalDotDamage
|
4 |
from general.skills import GENERAL_SKILLS
|
5 |
|
6 |
SKILLS: Dict[int, Skill | dict] = {
|
7 |
+
32745: {
|
8 |
"skill_class": PhysicalDamage,
|
9 |
"skill_name": "破",
|
10 |
"surplus_cof": [
|
11 |
+
1048576 * (0.4 - 1),
|
12 |
+
1048576 * (0.55 * 0.33 - 1),
|
13 |
+
1048576 * (0.7 - 1),
|
14 |
+
1048576 * (0.8 * 0.33 - 1),
|
15 |
+
1048576 * (0.9 - 1),
|
16 |
]
|
17 |
},
|
18 |
+
13039: {
|
19 |
"skill_class": PhysicalDamage,
|
20 |
+
"skill_name": "卷雪刀",
|
21 |
"attack_power_cof": 16,
|
22 |
+
"weapon_damage_cof": 1024
|
23 |
+
},
|
24 |
+
**{
|
25 |
+
skill_id: {
|
26 |
+
"skill_class": PhysicalDamage,
|
27 |
+
"skill_name": "盾击",
|
28 |
+
"damage_base": [150, 180, 210, 240, 270, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 520],
|
29 |
+
"damage_rand": [e * 0.1 for e in
|
30 |
+
[50, 80, 100, 120, 140, 160, 180, 200, 240, 280, 320, 360, 400, 440, 480, 520]],
|
31 |
+
"damage_gain": 1 / 5,
|
32 |
+
"attack_power_cof": [16 * 1.05 * 1.05 * 1.1 * 1.1] * 4 +
|
33 |
+
[(16 + (i - 4) * 5) * 1.05 * 1.05 * 1.1 * 1.1 for i in range(5, 16)] +
|
34 |
+
[100 * 1.05 * 1.05 * 1.1 * 1.1],
|
35 |
+
"weapon_damage_cof": 1024,
|
36 |
+
"skill_shield_gain": -512,
|
37 |
+
} for skill_id in (13106, 13160, 13161)
|
38 |
+
},
|
39 |
+
19409: {
|
40 |
+
"skill_class": PhysicalDamage,
|
41 |
+
"skill_name": "盾压",
|
42 |
+
"damage_base": [30, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315, 330, 345,
|
43 |
+
360, 375, 390, 405],
|
44 |
+
"damage_rand": [e * 0.1 for e in
|
45 |
+
[20, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315,
|
46 |
+
330, 345, 360, 375]],
|
47 |
+
"damage_gain": 1 / 2,
|
48 |
+
"attack_power_cof": [40 * 1.05 * 1.05 * 1.05 * 1.1] * 4 +
|
49 |
+
[(40 + (i - 4) * 7) * 1.05 * 1.05 * 1.05 * 1.1 for i in range(5, 24)] +
|
50 |
+
[190 * 1.05 * 1.05 * 1.05 * 1.1],
|
51 |
"weapon_damage_cof": 1024,
|
|
|
52 |
},
|
53 |
+
13099: {
|
54 |
"skill_class": PhysicalDamage,
|
55 |
+
"skill_name": "盾猛",
|
56 |
+
"damage_base": [35, 75, 85, 95, 105, 115, 125, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315,
|
57 |
+
330, 345, 360, 375, 390],
|
58 |
+
"damage_rand": [e * 0.1 for e in
|
59 |
+
[35, 45, 55, 65, 75, 85, 95, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285,
|
60 |
+
300, 315, 330, 345, 360]],
|
61 |
+
"damage_gain": 1 / 3,
|
62 |
+
"attack_power_cof": [40 * 1.05 * 1.05 * 1.05] * 4 +
|
63 |
+
[(40 + (i - 4) * 4) * 1.05 * 1.05 * 1.05 for i in range(5, 25)] +
|
64 |
+
[150 * 1.05 * 1.05 * 1.05],
|
65 |
+
"weapon_damage_cof": 1024,
|
66 |
+
},
|
67 |
+
13463: {
|
68 |
+
"skill_class": PhysicalDamage,
|
69 |
+
"skill_name": "盾飞",
|
70 |
+
"damage_base": [30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 300],
|
71 |
+
"damage_rand": [e * 0.1 for e in
|
72 |
+
[20, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 300]],
|
73 |
+
"damage_gain": 1 / 10,
|
74 |
+
"attack_power_cof": [16] * 4 +
|
75 |
+
[16 + (i - 4) * 1 for i in range(5, 18)] +
|
76 |
+
[35],
|
77 |
+
"weapon_damage_cof": 1024,
|
78 |
},
|
79 |
+
13044: {
|
80 |
+
"skill_class": PhysicalDamage,
|
81 |
+
"skill_name": "盾刀",
|
82 |
+
"damage_base": [31, 40, 45, 48, 55, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96,
|
83 |
+
98, 102, 106, 110, 114, 118, 122, 126, 130],
|
84 |
+
"damage_rand": [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15,
|
85 |
+
15, 15, 15, 15, 15, 15, 15],
|
86 |
+
"attack_power_cof": [16 * 1.05 * 1.05 * 1.1] * 4 +
|
87 |
+
[(16 + (i - 4) * 3) * 1.05 * 1.05 * 1.1 for i in range(5, 33)] +
|
88 |
+
[100 * 1.05 * 1.05 * 1.1],
|
89 |
+
"weapon_damage_cof": 1024,
|
90 |
+
},
|
91 |
+
8249: {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
"skill_class": PhysicalDotDamage,
|
93 |
+
"skill_name": "流血(DOT)",
|
94 |
+
"damage_base": 47,
|
95 |
+
"attack_power_cof": [16 * 1.5 * 2 * 1.05 * 1.1] * 9 +
|
96 |
+
[(16 + (i - 9) * 4) * 1.5 * 2 * 1.05 * 1.1 for i in range(10, 22)] +
|
97 |
+
[70 * 1.5 * 2 * 1.05 * 1.1],
|
98 |
+
"interval": 32,
|
99 |
+
"tick": 13
|
100 |
+
},
|
101 |
+
29188: {
|
|
|
|
|
|
|
102 |
"skill_class": DotSkill,
|
103 |
+
"skill_name": "流血",
|
104 |
+
"bind_skill": 8249
|
105 |
+
},
|
106 |
+
13075: {
|
107 |
+
"skill_class": PhysicalDamage,
|
108 |
+
"skill_name": "绝刀",
|
109 |
+
"damage_base": [240, 270, 300, 330, 350, 370, 390, 410, 430, 450, 470, 490, 510, 540, 570, 600, 630, 660, 690,
|
110 |
+
720],
|
111 |
+
"damage_rand": [e * 0.1 for e in
|
112 |
+
[80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440,
|
113 |
+
500]],
|
114 |
+
"damage_gain": 1 / 4,
|
115 |
+
"attack_power_cof": [60 * 0.9 * 0.75 * 0.9 * 1.1 * 1.05 * 1.05 * 1.05 * 1.22 * 1.05 * 1.05 * 1.1 * 1.06] * 4 +
|
116 |
+
[(60 + (i - 4) * 12) * 0.9 * 0.75 * 0.9 * 1.1 * 1.05 * 1.05 * 1.05 * 1.22 * 1.05 * 1.05 *
|
117 |
+
1.1 * 1.06 for i in range(5, 20)] +
|
118 |
+
[250 * 0.75 * 0.9 * 1.1 * 1.05 * 1.05 * 1.05 * 1.22 * 1.05 * 1.05 * 1.1 * 1.06],
|
119 |
+
"weapon_damage_cof": 1024,
|
120 |
},
|
121 |
+
13092: {
|
122 |
"skill_class": PhysicalDamage,
|
123 |
+
"skill_name": "斩刀",
|
124 |
+
"damage_base": [230, 260, 290, 320, 350, 380, 410, 440, 470, 510, 550, 580, 610, 640, 670, 700, 710, 720, 730,
|
125 |
+
740, 750, 760],
|
126 |
+
"damage_rand": [e * 0.1 for e in
|
127 |
+
[20, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315,
|
128 |
+
330, 345]],
|
129 |
+
"damage_gain": 0.3,
|
130 |
+
"attack_power_cof": [50 * 0.9 * 0.85 * 1.05 * 1.1 * 1.15 * 1.15 * 1.05 * 1.1 * 1.1 * 1.06 * 1.2] * 4 +
|
131 |
+
[(50 + (i - 4) * 10) * 0.9 * 0.85 * 1.05 * 1.1 * 1.15 * 1.15 * 1.05 * 1.1 * 1.1 * 1.06 * 1.2
|
132 |
+
for i in range(5, 22)] +
|
133 |
+
[250 * 0.9 * 0.85 * 1.05 * 1.1 * 1.15 * 1.15 * 1.05 * 1.1 * 1.1 * 1.06 * 1.2],
|
134 |
+
"weapon_damage_cof": 1024,
|
135 |
},
|
136 |
+
28479: {
|
137 |
"skill_class": PhysicalDamage,
|
138 |
+
"skill_name": "劫刀",
|
139 |
+
"damage_base": [e / 5 for e in
|
140 |
+
[120, 150, 180, 210, 230, 250, 270, 290, 310, 330, 350, 370, 390, 400, 410, 420, 430, 440, 450,
|
141 |
+
460, 470, 480, 490, 500, 510, 520, 530, 550]],
|
142 |
+
"damage_rand": [e * 0.1 for e in
|
143 |
+
[80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 120, 130, 140, 150, 160, 170, 180, 190, 200,
|
144 |
+
210, 220, 230, 240, 250, 260, 270, 280, 290]],
|
145 |
+
"attack_power_cof": [20 * 1.1 * 1.05 * 1.1 * 1.05 * 1.1 * 1.05 * 1.06] * 9 +
|
146 |
+
[(20 + (i - 9) * 7) * 1.1 * 1.05 * 1.1 * 1.05 * 1.1 * 1.05 * 1.06
|
147 |
+
for i in range(10, 28)] +
|
148 |
+
[160 * 1.1 * 1.05 * 1.1 * 1.05 * 1.1 * 1.05 * 1.06],
|
149 |
+
"weapon_damage_cof": 1024,
|
150 |
+
},
|
151 |
+
36065: {
|
152 |
+
"skill_class": PhysicalDamage,
|
153 |
+
"skill_name": ["击破·援戈", "斩破·惊涌", "绝破·惊涌", "闪破·惊涌", "劫破·惊涌"],
|
154 |
+
"surplus_cof": [
|
155 |
+
1048576 * (0.697 * 0.5 * 1.2 - 1),
|
156 |
+
1048576 * (0.697 * 0.14 * 1.2 * 1.2 - 1),
|
157 |
+
1048576 * (0.697 * 0.14 * 1.2 * 1.2 - 1),
|
158 |
+
1048576 * (0.697 * 0.14 * 1.2 - 1),
|
159 |
+
1048576 * (0.697 * 0.14 * 1.2 - 1),
|
160 |
+
]
|
161 |
+
},
|
162 |
+
36482: {
|
163 |
+
"skill_class": PhysicalDamage,
|
164 |
+
"skill_name": "援戈·血影",
|
165 |
+
"damage_base": 400 / 5,
|
166 |
+
"damage_rand": 150 * 0.1,
|
167 |
+
"attack_power_cof": 300 * 2.3 * 0.83 * 1.2,
|
168 |
+
"weapon_damage_cof": 1024
|
169 |
+
},
|
170 |
+
37253: {
|
171 |
+
"skill_class": PhysicalDamage,
|
172 |
+
"skill_name": "麾远",
|
173 |
+
"damage_base": 400 / 5,
|
174 |
+
"damage_rand": 150 * 0.1,
|
175 |
+
"attack_power_cof": 170 * 2,
|
176 |
+
},
|
177 |
+
34673: {
|
178 |
+
"skill_class": PhysicalDamage,
|
179 |
+
"skill_name": "业火焚城",
|
180 |
+
"attack_power_cof": 40,
|
181 |
+
"weapon_damage_cof": 1024
|
182 |
+
},
|
183 |
+
34674: {
|
184 |
+
"skill_class": PhysicalDamage,
|
185 |
+
"skill_name": "麟光甲寒",
|
186 |
+
"damage_base": 400 / 5,
|
187 |
+
"damage_rand": 150 * 0.1,
|
188 |
+
"attack_power_cof": 220 * 1.3 * 1.2,
|
189 |
+
"weapon_damage_cof": 1024
|
190 |
+
},
|
191 |
+
34714: {
|
192 |
+
"skill_class": PhysicalDamage,
|
193 |
+
"skill_name": "业火焚城·云盾",
|
194 |
+
"damage_base": 400 / 5,
|
195 |
+
"damage_rand": 150 * 0.1,
|
196 |
+
"attack_power_cof": 160 * 1.3,
|
197 |
+
"weapon_damage_cof": 1024
|
198 |
+
},
|
199 |
+
37448: {
|
200 |
+
"skill_class": PhysicalDamage,
|
201 |
+
"skill_name": "破·麟光",
|
202 |
+
"surplus_cof": 1048576 * (0.697 * 0.14 * 1.2 - 1)
|
203 |
+
},
|
204 |
+
30925: {
|
205 |
+
"skill_class": PhysicalDamage,
|
206 |
+
"skill_name": "阵云结晦",
|
207 |
+
"damage_base": 240,
|
208 |
+
"damage_rand": 80 * 0.1,
|
209 |
+
"damage_gain": 1.2 / 4,
|
210 |
+
"attack_power_cof": 80 * 2 * 1.5,
|
211 |
+
"weapon_damage_cof": 1024,
|
212 |
+
"skill_pve_addition": 614
|
213 |
+
},
|
214 |
+
30926: {
|
215 |
+
"skill_class": PhysicalDamage,
|
216 |
+
"skill_name": "月照连营",
|
217 |
+
"damage_base": 320,
|
218 |
+
"damage_rand": 120 * 0.1,
|
219 |
+
"damage_gain": 1.2 / 4,
|
220 |
+
"attack_power_cof": 100 * 2 * 1.5,
|
221 |
+
"weapon_damage_cof": 1024,
|
222 |
+
"skill_pve_addition": 614
|
223 |
+
},
|
224 |
+
30857: {
|
225 |
+
"skill_class": PhysicalDamage,
|
226 |
+
"skill_name": "雁门迢递",
|
227 |
+
"damage_base": [400, 460, 520, 580, 640, 700, 760],
|
228 |
+
"damage_rand": [e * 0.1 for e in [300, 320, 340, 360, 380, 400, 420]],
|
229 |
+
"damage_gain": 1.2 / 4,
|
230 |
+
"attack_power_cof": 120 * 2 * 1.5,
|
231 |
+
"weapon_damage_cof": 1024,
|
232 |
+
"skill_pve_addition": 614
|
233 |
+
},
|
234 |
+
30858: {
|
235 |
+
"skill_class": PhysicalDamage,
|
236 |
+
"skill_name": "绝国",
|
237 |
+
"damage_base": 24,
|
238 |
+
"damage_rand": 15 * 0.1,
|
239 |
+
"damage_gain": 1.2 / 4,
|
240 |
+
"attack_power_cof": [20 * (i + 1) * 1.2 * 1.3 for i in range(16)] +
|
241 |
+
[40 * (i + 1) * 1.2 * 1.3 for i in range(16, 80)],
|
242 |
+
"weapon_damage_cof": 1024,
|
243 |
+
},
|
244 |
+
30859: {
|
245 |
+
"skill_class": PhysicalDamage,
|
246 |
+
"skill_name": "阵云绝",
|
247 |
+
"damage_base": 47,
|
248 |
+
"damage_rand": 28 * 0.1,
|
249 |
+
"damage_gain": 1.2 / 4,
|
250 |
+
"attack_power_cof": 80 * 1.2,
|
251 |
+
"weapon_damage_cof": 1024,
|
252 |
+
"skill_pve_addition": 614
|
253 |
},
|
254 |
+
25780: {
|
255 |
"skill_class": PhysicalDamage,
|
256 |
+
"skill_name": "盾击·神兵",
|
257 |
"damage_base": 20,
|
258 |
"damage_rand": 2,
|
259 |
+
"attack_power_cof": 50
|
260 |
}
|
261 |
}
|
262 |
|
schools/fen_shan_jing/talents.py
CHANGED
@@ -1,95 +1,47 @@
|
|
1 |
from typing import Dict
|
2 |
|
3 |
-
from base.attribute import Attribute
|
4 |
from base.gain import Gain
|
5 |
from base.skill import Skill
|
6 |
|
7 |
|
8 |
-
class
|
9 |
def add_skills(self, skills: Dict[int, Skill]):
|
10 |
-
skills[
|
11 |
-
skills[
|
12 |
|
13 |
def sub_skills(self, skills: Dict[int, Skill]):
|
14 |
-
skills[
|
15 |
-
skills[
|
16 |
-
|
17 |
-
|
18 |
-
class 素矰(Gain):
|
19 |
-
def add_skills(self, skills: Dict[int, Skill]):
|
20 |
-
skills[26856].attack_power_cof_gain *= 1.05
|
21 |
-
|
22 |
-
def sub_skills(self, skills: Dict[int, Skill]):
|
23 |
-
skills[26856].attack_power_cof_gain /= 1.05
|
24 |
-
|
25 |
-
|
26 |
-
class 孰湖(Gain):
|
27 |
-
def add_skills(self, skills: Dict[int, Skill]):
|
28 |
-
for skill_id in (36056, 36057, 36111, 36112, 36113, 36114):
|
29 |
-
skills[skill_id].skill_damage_addition += 62
|
30 |
-
|
31 |
-
def sub_skills(self, skills: Dict[int, Skill]):
|
32 |
-
for skill_id in (36056, 36057, 36111, 36112, 36113, 36114):
|
33 |
-
skills[skill_id].skill_damage_addition -= 62
|
34 |
-
|
35 |
-
|
36 |
-
class 桑柘(Gain):
|
37 |
-
def add_skills(self, skills: Dict[int, Skill]):
|
38 |
-
skills[35771].tick += 1
|
39 |
-
|
40 |
-
def sub_skills(self, skills: Dict[int, Skill]):
|
41 |
-
skills[35771].tick -= 1
|
42 |
-
|
43 |
-
|
44 |
-
class 卢令(Gain):
|
45 |
-
def add_attribute(self, attribute: Attribute):
|
46 |
-
attribute.agility_gain += 102
|
47 |
-
|
48 |
-
def sub_attribute(self, attribute: Attribute):
|
49 |
-
attribute.agility_gain -= 102
|
50 |
-
|
51 |
-
|
52 |
-
class 贯侯(Gain):
|
53 |
-
def add_skills(self, skills: Dict[int, Skill]):
|
54 |
-
skills[36157].skill_pve_addition += 205
|
55 |
-
|
56 |
-
def sub_skills(self, skills: Dict[int, Skill]):
|
57 |
-
skills[36157].skill_pve_addition -= 205
|
58 |
|
59 |
|
60 |
TALENT_GAINS: Dict[int, Gain] = {
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
35751: Gain("佩弦"),
|
74 |
-
35754: Gain("丛云隐月"),
|
75 |
-
35757: 贯侯("贯侯"),
|
76 |
-
35764: Gain("朝仪万汇"),
|
77 |
-
35761: Gain("朱厌")
|
78 |
}
|
79 |
|
80 |
TALENTS = [
|
81 |
-
[
|
82 |
-
[
|
83 |
-
[
|
84 |
-
[
|
85 |
-
[
|
86 |
-
[
|
87 |
-
[
|
88 |
-
[
|
89 |
-
[
|
90 |
-
[
|
91 |
-
[
|
92 |
-
[
|
93 |
]
|
94 |
TALENT_DECODER = {talent_id: talent.gain_name for talent_id, talent in TALENT_GAINS.items()}
|
95 |
TALENT_ENCODER = {v: k for k, v in TALENT_DECODER.items()}
|
|
|
1 |
from typing import Dict
|
2 |
|
|
|
3 |
from base.gain import Gain
|
4 |
from base.skill import Skill
|
5 |
|
6 |
|
7 |
+
class 分野(Gain):
|
8 |
def add_skills(self, skills: Dict[int, Skill]):
|
9 |
+
skills[13075].skill_critical_strike += 1500
|
10 |
+
skills[13075].skill_critical_power += 200
|
11 |
|
12 |
def sub_skills(self, skills: Dict[int, Skill]):
|
13 |
+
skills[13075].skill_critical_strike -= 1500
|
14 |
+
skills[13075].skill_critical_power -= 200
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
|
17 |
TALENT_GAINS: Dict[int, Gain] = {
|
18 |
+
13317: Gain("刀魂"),
|
19 |
+
13090: Gain("绝返"),
|
20 |
+
13087: 分野("分野"),
|
21 |
+
21281: Gain("血魄"),
|
22 |
+
22897: Gain("锋鸣"),
|
23 |
+
37239: Gain("麾远"),
|
24 |
+
34912: Gain("业火麟光"),
|
25 |
+
13126: Gain("恋战"),
|
26 |
+
36058: Gain("援戈"),
|
27 |
+
36205: Gain("惊涌"),
|
28 |
+
14838: Gain("蔑视"),
|
29 |
+
30769: Gain("阵云结晦")
|
|
|
|
|
|
|
|
|
|
|
30 |
}
|
31 |
|
32 |
TALENTS = [
|
33 |
+
[13317],
|
34 |
+
[13090],
|
35 |
+
[13087],
|
36 |
+
[21281],
|
37 |
+
[22897],
|
38 |
+
[37239],
|
39 |
+
[34912],
|
40 |
+
[13126],
|
41 |
+
[36058],
|
42 |
+
[36205],
|
43 |
+
[14838],
|
44 |
+
[30769]
|
45 |
]
|
46 |
TALENT_DECODER = {talent_id: talent.gain_name for talent_id, talent in TALENT_GAINS.items()}
|
47 |
TALENT_ENCODER = {v: k for k, v in TALENT_DECODER.items()}
|
schools/gu_feng_jue/skills.py
CHANGED
@@ -7,14 +7,14 @@ from general.skills import GENERAL_SKILLS
|
|
7 |
|
8 |
class 横刀断浪流血(Skill):
|
9 |
def record(self, critical, parser):
|
10 |
-
bind_skill = self.bind_skill
|
11 |
bind_buff = self.bind_buff
|
12 |
-
parser.current_ticks[bind_skill] =
|
13 |
-
parser.current_stacks[bind_skill] = self.max_stack
|
14 |
for level in range(self.max_stack):
|
15 |
parser.current_target_buffs.pop((bind_buff, level + 1), None)
|
16 |
parser.current_target_buffs[(bind_buff, self.max_stack)] = 1
|
17 |
-
parser.current_dot_snapshot[bind_skill] = parser.current_player_buffs.copy()
|
18 |
|
19 |
|
20 |
SKILLS: Dict[int, Skill | dict] = {
|
@@ -36,7 +36,8 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
36 |
"skill_name": "避实击虚",
|
37 |
"damage_base": [35, 42, 45, 50, 55, 60],
|
38 |
"damage_rand": 5,
|
39 |
-
"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]
|
|
|
40 |
},
|
41 |
32246: {
|
42 |
"skill_class": PhysicalDamage,
|
@@ -168,6 +169,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
168 |
[290],
|
169 |
"weapon_damage_cof": 3072
|
170 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
**{
|
172 |
skill_id: {
|
173 |
"skill_class": 横刀断浪流血,
|
@@ -175,16 +184,8 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
175 |
"bind_skill": 24443,
|
176 |
"bind_buff": -32513,
|
177 |
"max_stack": i + 1,
|
178 |
-
"tick": 3
|
179 |
} for i, skill_id in enumerate([32874, 32873, 32872, 32871, 32870, 32869])
|
180 |
},
|
181 |
-
24443: {
|
182 |
-
"skill_class": PhysicalDotDamage,
|
183 |
-
"skill_name": "流血(DOT)",
|
184 |
-
"damage_base": 114,
|
185 |
-
"attack_power_cof": 100,
|
186 |
-
"interval": FRAME_PER_SECOND * DOT_DAMAGE_SCALE / 3
|
187 |
-
},
|
188 |
32234: {
|
189 |
"skill_class": PhysicalDamage,
|
190 |
"skill_name": "横云断浪",
|
|
|
7 |
|
8 |
class 横刀断浪流血(Skill):
|
9 |
def record(self, critical, parser):
|
10 |
+
bind_skill = parser.current_school.skills(self.bind_skill)
|
11 |
bind_buff = self.bind_buff
|
12 |
+
parser.current_ticks[self.bind_skill] = bind_skill.tick
|
13 |
+
parser.current_stacks[self.bind_skill] = self.max_stack
|
14 |
for level in range(self.max_stack):
|
15 |
parser.current_target_buffs.pop((bind_buff, level + 1), None)
|
16 |
parser.current_target_buffs[(bind_buff, self.max_stack)] = 1
|
17 |
+
parser.current_dot_snapshot[self.bind_skill] = parser.current_player_buffs.copy()
|
18 |
|
19 |
|
20 |
SKILLS: Dict[int, Skill | dict] = {
|
|
|
36 |
"skill_name": "避实击虚",
|
37 |
"damage_base": [35, 42, 45, 50, 55, 60],
|
38 |
"damage_rand": 5,
|
39 |
+
"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],
|
40 |
+
"weapon_damage_cof": 1024,
|
41 |
},
|
42 |
32246: {
|
43 |
"skill_class": PhysicalDamage,
|
|
|
169 |
[290],
|
170 |
"weapon_damage_cof": 3072
|
171 |
},
|
172 |
+
24443: {
|
173 |
+
"skill_class": PhysicalDotDamage,
|
174 |
+
"skill_name": "流血(DOT)",
|
175 |
+
"damage_base": 114,
|
176 |
+
"attack_power_cof": 100,
|
177 |
+
"interval": FRAME_PER_SECOND * DOT_DAMAGE_SCALE / 3,
|
178 |
+
"tick": 3
|
179 |
+
},
|
180 |
**{
|
181 |
skill_id: {
|
182 |
"skill_class": 横刀断浪流血,
|
|
|
184 |
"bind_skill": 24443,
|
185 |
"bind_buff": -32513,
|
186 |
"max_stack": i + 1,
|
|
|
187 |
} for i, skill_id in enumerate([32874, 32873, 32872, 32871, 32870, 32869])
|
188 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
32234: {
|
190 |
"skill_class": PhysicalDamage,
|
191 |
"skill_name": "横云断浪",
|
schools/gu_feng_jue/talents.py
CHANGED
@@ -42,12 +42,10 @@ class 放皓(Gain):
|
|
42 |
|
43 |
class 涣衍(Gain):
|
44 |
def add_skills(self, skills: Dict[int, Skill]):
|
45 |
-
|
46 |
-
skills[skill_id].tick += 3
|
47 |
|
48 |
def sub_skills(self, skills: Dict[int, Skill]):
|
49 |
-
|
50 |
-
skills[skill_id].tick -= 3
|
51 |
|
52 |
|
53 |
class 涤瑕(Gain):
|
|
|
42 |
|
43 |
class 涣衍(Gain):
|
44 |
def add_skills(self, skills: Dict[int, Skill]):
|
45 |
+
skills[24443].tick += 3
|
|
|
46 |
|
47 |
def sub_skills(self, skills: Dict[int, Skill]):
|
48 |
+
skills[24443].tick -= 3
|
|
|
49 |
|
50 |
|
51 |
class 涤瑕(Gain):
|
schools/hua_jian_you/skills.py
CHANGED
@@ -22,11 +22,10 @@ class DotConsumeSkill(Skill):
|
|
22 |
new_status_tuple = status_tuple
|
23 |
skill_id, skill_level, skill_stack = skill_tuple
|
24 |
parser.current_ticks[skill_id] += 1
|
25 |
-
tick =
|
26 |
parser.current_records[(skill_id, skill_level, skill_stack * tick)][new_status_tuple].append(
|
27 |
parser.current_records[skill_tuple][status_tuple].pop()
|
28 |
)
|
29 |
-
parser.current_ticks[skill_id] -= tick
|
30 |
|
31 |
|
32 |
class GeneraConsumeSkill(DotConsumeSkill):
|
@@ -68,21 +67,20 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
68 |
[(28 + (48 + (i - 9) * 9) * 0.9 * 1.25 * 1.15 * 1.05 * 1.1 * 1.05 * 1.15 * 1.1) * 1.05 *
|
69 |
1.05 * 1.05 for i in range(10, 19)] +
|
70 |
[(28 + 155 * 0.9 * 1.25 * 1.15 * 1.05 * 1.1 * 1.05 * 1.15 * 1.1) * 1.05 * 1.05 * 1.05],
|
71 |
-
"interval": 48
|
|
|
72 |
},
|
73 |
**{
|
74 |
skill_id: {
|
75 |
"skill_class": DotSkill,
|
76 |
"skill_name": "兰摧玉折",
|
77 |
-
"bind_skill": 711
|
78 |
-
"tick": 6 + 1
|
79 |
} for skill_id in (13848, 6136) # 18730
|
80 |
},
|
81 |
6129: {
|
82 |
"skill_class": DotConsumeSkill,
|
83 |
"skill_name": "兰摧玉折",
|
84 |
"bind_skill": 711,
|
85 |
-
"tick": 99,
|
86 |
"bind_buff_levels": {5: 2, 6: 1}
|
87 |
},
|
88 |
714: {
|
@@ -93,21 +91,20 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
93 |
[(48 + (i - 9) * 8) * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.1 * 1.05 * 1.05 * 1.05 for i in
|
94 |
range(10, 24)] +
|
95 |
[175 * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.1 * 1.05 * 1.05 * 1.05],
|
96 |
-
"interval": 48
|
|
|
97 |
},
|
98 |
**{
|
99 |
skill_id: {
|
100 |
"skill_class": DotSkill,
|
101 |
"skill_name": "钟林毓秀",
|
102 |
-
"bind_skill": 714
|
103 |
-
"tick": 6 + 1
|
104 |
} for skill_id in (285, 13847, 6135)
|
105 |
},
|
106 |
6126: {
|
107 |
"skill_class": DotConsumeSkill,
|
108 |
"skill_name": "钟林毓秀",
|
109 |
"bind_skill": 714,
|
110 |
-
"tick": 99,
|
111 |
"bind_buff_levels": {5: 2, 6: 1}
|
112 |
},
|
113 |
14941: {
|
@@ -129,21 +126,20 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
129 |
[(64 + (i - 9) * 4) * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.05 * 1.05 * 1.1 for i in
|
130 |
range(10, 29)] +
|
131 |
[161 * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.05 * 1.05 * 1.1],
|
132 |
-
"interval": 48
|
|
|
133 |
},
|
134 |
**{
|
135 |
skill_id: {
|
136 |
"skill_class": DotSkill,
|
137 |
"skill_name": "商阳指",
|
138 |
-
"bind_skill": 666
|
139 |
-
"tick": 6 + 1
|
140 |
} for skill_id in (180, 6134)
|
141 |
},
|
142 |
6128: {
|
143 |
"skill_class": DotConsumeSkill,
|
144 |
"skill_name": "商阳指",
|
145 |
"bind_skill": 666,
|
146 |
-
"tick": 99,
|
147 |
"bind_buff_levels": {5: 2, 6: 1}
|
148 |
},
|
149 |
6693: {
|
@@ -184,22 +180,21 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
184 |
"skill_name": "快雪时晴(DOT)",
|
185 |
"damage_base": 38,
|
186 |
"attack_power_cof": (28 + 155 * 0.9 * 1.25 * 1.15 * 1.05 * 1.1 * 1.05 * 1.15 * 1.1) * 1.05 * 1.2 * 0.12,
|
187 |
-
"interval": 64
|
|
|
|
|
188 |
},
|
189 |
**{
|
190 |
skill_id: {
|
191 |
"skill_class": DotSkill,
|
192 |
"skill_name": "快雪时晴",
|
193 |
-
"bind_skill": 24158
|
194 |
-
"tick": 7,
|
195 |
-
"max_stack": 6
|
196 |
} for skill_id in (32409, 32481)
|
197 |
},
|
198 |
32410: {
|
199 |
"skill_class": DotConsumeSkill,
|
200 |
"skill_name": "快雪时晴",
|
201 |
"bind_skill": 24158,
|
202 |
-
"tick": 99,
|
203 |
"bind_buff_levels": {2: 2, 3: 1}
|
204 |
},
|
205 |
601: {
|
|
|
22 |
new_status_tuple = status_tuple
|
23 |
skill_id, skill_level, skill_stack = skill_tuple
|
24 |
parser.current_ticks[skill_id] += 1
|
25 |
+
tick = parser.current_ticks.pop(skill_id)
|
26 |
parser.current_records[(skill_id, skill_level, skill_stack * tick)][new_status_tuple].append(
|
27 |
parser.current_records[skill_tuple][status_tuple].pop()
|
28 |
)
|
|
|
29 |
|
30 |
|
31 |
class GeneraConsumeSkill(DotConsumeSkill):
|
|
|
67 |
[(28 + (48 + (i - 9) * 9) * 0.9 * 1.25 * 1.15 * 1.05 * 1.1 * 1.05 * 1.15 * 1.1) * 1.05 *
|
68 |
1.05 * 1.05 for i in range(10, 19)] +
|
69 |
[(28 + 155 * 0.9 * 1.25 * 1.15 * 1.05 * 1.1 * 1.05 * 1.15 * 1.1) * 1.05 * 1.05 * 1.05],
|
70 |
+
"interval": 48,
|
71 |
+
"tick": 6 + 1
|
72 |
},
|
73 |
**{
|
74 |
skill_id: {
|
75 |
"skill_class": DotSkill,
|
76 |
"skill_name": "兰摧玉折",
|
77 |
+
"bind_skill": 711
|
|
|
78 |
} for skill_id in (13848, 6136) # 18730
|
79 |
},
|
80 |
6129: {
|
81 |
"skill_class": DotConsumeSkill,
|
82 |
"skill_name": "兰摧玉折",
|
83 |
"bind_skill": 711,
|
|
|
84 |
"bind_buff_levels": {5: 2, 6: 1}
|
85 |
},
|
86 |
714: {
|
|
|
91 |
[(48 + (i - 9) * 8) * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.1 * 1.05 * 1.05 * 1.05 for i in
|
92 |
range(10, 24)] +
|
93 |
[175 * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.1 * 1.05 * 1.05 * 1.05],
|
94 |
+
"interval": 48,
|
95 |
+
"tick": 6 + 1
|
96 |
},
|
97 |
**{
|
98 |
skill_id: {
|
99 |
"skill_class": DotSkill,
|
100 |
"skill_name": "钟林毓秀",
|
101 |
+
"bind_skill": 714
|
|
|
102 |
} for skill_id in (285, 13847, 6135)
|
103 |
},
|
104 |
6126: {
|
105 |
"skill_class": DotConsumeSkill,
|
106 |
"skill_name": "钟林毓秀",
|
107 |
"bind_skill": 714,
|
|
|
108 |
"bind_buff_levels": {5: 2, 6: 1}
|
109 |
},
|
110 |
14941: {
|
|
|
126 |
[(64 + (i - 9) * 4) * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.05 * 1.05 * 1.1 for i in
|
127 |
range(10, 29)] +
|
128 |
[161 * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.05 * 1.05 * 1.1],
|
129 |
+
"interval": 48,
|
130 |
+
"tick": 6 + 1
|
131 |
},
|
132 |
**{
|
133 |
skill_id: {
|
134 |
"skill_class": DotSkill,
|
135 |
"skill_name": "商阳指",
|
136 |
+
"bind_skill": 666
|
|
|
137 |
} for skill_id in (180, 6134)
|
138 |
},
|
139 |
6128: {
|
140 |
"skill_class": DotConsumeSkill,
|
141 |
"skill_name": "商阳指",
|
142 |
"bind_skill": 666,
|
|
|
143 |
"bind_buff_levels": {5: 2, 6: 1}
|
144 |
},
|
145 |
6693: {
|
|
|
180 |
"skill_name": "快雪时晴(DOT)",
|
181 |
"damage_base": 38,
|
182 |
"attack_power_cof": (28 + 155 * 0.9 * 1.25 * 1.15 * 1.05 * 1.1 * 1.05 * 1.15 * 1.1) * 1.05 * 1.2 * 0.12,
|
183 |
+
"interval": 64,
|
184 |
+
"tick": 7,
|
185 |
+
"max_stack": 6
|
186 |
},
|
187 |
**{
|
188 |
skill_id: {
|
189 |
"skill_class": DotSkill,
|
190 |
"skill_name": "快雪时晴",
|
191 |
+
"bind_skill": 24158
|
|
|
|
|
192 |
} for skill_id in (32409, 32481)
|
193 |
},
|
194 |
32410: {
|
195 |
"skill_class": DotConsumeSkill,
|
196 |
"skill_name": "快雪时晴",
|
197 |
"bind_skill": 24158,
|
|
|
198 |
"bind_buff_levels": {2: 2, 3: 1}
|
199 |
},
|
200 |
601: {
|
schools/ling_hai_jue/skills.py
CHANGED
@@ -166,15 +166,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
166 |
"skill_name": "青冥(DOT)",
|
167 |
"damage_base": 50,
|
168 |
"attack_power_cof": 550,
|
169 |
-
"interval": 32
|
170 |
-
|
|
|
171 |
},
|
172 |
25640: {
|
173 |
"skill_class": DotSkill,
|
174 |
"skill_name": "青冥",
|
175 |
-
"bind_skill": 18386
|
176 |
-
"max_stack": 6,
|
177 |
-
"tick": 6
|
178 |
},
|
179 |
25783: {
|
180 |
"skill_class": PhysicalDamage,
|
@@ -188,15 +187,15 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
188 |
"skill_name": "御波驾澜(DOT)",
|
189 |
"damage_base": 25,
|
190 |
"attack_power_cof": 680,
|
191 |
-
"interval": 48
|
|
|
|
|
192 |
|
193 |
},
|
194 |
26935: {
|
195 |
"skill_class": DotSkill,
|
196 |
"skill_name": "御波驾澜",
|
197 |
-
"bind_skill": 19557
|
198 |
-
"max_stack": 3,
|
199 |
-
"tick": 6
|
200 |
}
|
201 |
}
|
202 |
|
|
|
166 |
"skill_name": "青冥(DOT)",
|
167 |
"damage_base": 50,
|
168 |
"attack_power_cof": 550,
|
169 |
+
"interval": 32,
|
170 |
+
"max_stack": 6,
|
171 |
+
"tick": 6
|
172 |
},
|
173 |
25640: {
|
174 |
"skill_class": DotSkill,
|
175 |
"skill_name": "青冥",
|
176 |
+
"bind_skill": 18386
|
|
|
|
|
177 |
},
|
178 |
25783: {
|
179 |
"skill_class": PhysicalDamage,
|
|
|
187 |
"skill_name": "御波驾澜(DOT)",
|
188 |
"damage_base": 25,
|
189 |
"attack_power_cof": 680,
|
190 |
+
"interval": 48,
|
191 |
+
"max_stack": 3,
|
192 |
+
"tick": 6
|
193 |
|
194 |
},
|
195 |
26935: {
|
196 |
"skill_class": DotSkill,
|
197 |
"skill_name": "御波驾澜",
|
198 |
+
"bind_skill": 19557
|
|
|
|
|
199 |
}
|
200 |
}
|
201 |
|
schools/mo_wen/skills.py
CHANGED
@@ -51,14 +51,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
51 |
[(48 + (i - 9) * 7) * 1.1 * 1.05 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05 for i in
|
52 |
range(10, 25)] +
|
53 |
[160 * 1.1 * 1.05 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05],
|
54 |
-
"interval": 48
|
|
|
55 |
},
|
56 |
**{
|
57 |
skill_id: {
|
58 |
"skill_class": DotSkill,
|
59 |
"skill_name": "商",
|
60 |
-
"bind_skill": 9357
|
61 |
-
"tick": 6
|
62 |
} for skill_id in (14287, 17788)
|
63 |
},
|
64 |
14311: {
|
@@ -81,14 +81,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
81 |
[(48 + (i - 9) * 8) * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05 for i in
|
82 |
range(10, 25)] +
|
83 |
[180 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05],
|
84 |
-
"interval": 48
|
|
|
85 |
},
|
86 |
**{
|
87 |
skill_id: {
|
88 |
"skill_class": DotSkill,
|
89 |
"skill_name": "角",
|
90 |
-
"bind_skill": 9361
|
91 |
-
"tick": 6
|
92 |
} for skill_id in (14291, 17792)
|
93 |
},
|
94 |
14312: {
|
@@ -189,14 +189,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
189 |
"skill_name": "神兵·宫(DOT)",
|
190 |
"damage_base": 58,
|
191 |
"attack_power_cof": 360 * 1.1 * 1.05 * 1.05 * 1.05 * 1.35,
|
192 |
-
"interval": 48
|
|
|
|
|
193 |
},
|
194 |
31005: {
|
195 |
"skill_class": DotSkill,
|
196 |
"skill_name": "神兵·宫",
|
197 |
-
"bind_skill": 23187
|
198 |
-
"max_stack": 3,
|
199 |
-
"tick": 10
|
200 |
}
|
201 |
}
|
202 |
|
|
|
51 |
[(48 + (i - 9) * 7) * 1.1 * 1.05 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05 for i in
|
52 |
range(10, 25)] +
|
53 |
[160 * 1.1 * 1.05 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05],
|
54 |
+
"interval": 48,
|
55 |
+
"tick": 6
|
56 |
},
|
57 |
**{
|
58 |
skill_id: {
|
59 |
"skill_class": DotSkill,
|
60 |
"skill_name": "商",
|
61 |
+
"bind_skill": 9357
|
|
|
62 |
} for skill_id in (14287, 17788)
|
63 |
},
|
64 |
14311: {
|
|
|
81 |
[(48 + (i - 9) * 8) * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05 for i in
|
82 |
range(10, 25)] +
|
83 |
[180 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05],
|
84 |
+
"interval": 48,
|
85 |
+
"tick": 6
|
86 |
},
|
87 |
**{
|
88 |
skill_id: {
|
89 |
"skill_class": DotSkill,
|
90 |
"skill_name": "角",
|
91 |
+
"bind_skill": 9361
|
|
|
92 |
} for skill_id in (14291, 17792)
|
93 |
},
|
94 |
14312: {
|
|
|
189 |
"skill_name": "神兵·宫(DOT)",
|
190 |
"damage_base": 58,
|
191 |
"attack_power_cof": 360 * 1.1 * 1.05 * 1.05 * 1.05 * 1.35,
|
192 |
+
"interval": 48,
|
193 |
+
"max_stack": 3,
|
194 |
+
"tick": 10
|
195 |
},
|
196 |
31005: {
|
197 |
"skill_class": DotSkill,
|
198 |
"skill_name": "神兵·宫",
|
199 |
+
"bind_skill": 23187
|
|
|
|
|
200 |
}
|
201 |
}
|
202 |
|
schools/shan_hai_xin_jue/skills.py
CHANGED
@@ -112,7 +112,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
112 |
"skill_name": "贯穿(DOT)",
|
113 |
"damage_base": 32,
|
114 |
"attack_power_cof": 215 * 0.7 * 1.15 * 0.9 * 0.9 * 0.9,
|
115 |
-
"interval": FRAME_PER_SECOND * DOT_DAMAGE_SCALE / 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
},
|
117 |
36165: {
|
118 |
"skill_class": DotConsumeSkill,
|
@@ -120,13 +127,6 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
120 |
"bind_skill": 26856,
|
121 |
"tick": 3
|
122 |
},
|
123 |
-
35771: {
|
124 |
-
"skill_class": DotSkill,
|
125 |
-
"skill_name": "贯穿",
|
126 |
-
"bind_skill": 26856,
|
127 |
-
"max_stack": 6,
|
128 |
-
"tick": 4
|
129 |
-
},
|
130 |
36453: {
|
131 |
"skill_class": PhysicalDamage,
|
132 |
"skill_name": "朝仪万汇",
|
|
|
112 |
"skill_name": "贯穿(DOT)",
|
113 |
"damage_base": 32,
|
114 |
"attack_power_cof": 215 * 0.7 * 1.15 * 0.9 * 0.9 * 0.9,
|
115 |
+
"interval": FRAME_PER_SECOND * DOT_DAMAGE_SCALE / 4,
|
116 |
+
"max_stack": 6,
|
117 |
+
"tick": 4
|
118 |
+
},
|
119 |
+
35771: {
|
120 |
+
"skill_class": DotSkill,
|
121 |
+
"skill_name": "贯穿",
|
122 |
+
"bind_skill": 26856
|
123 |
},
|
124 |
36165: {
|
125 |
"skill_class": DotConsumeSkill,
|
|
|
127 |
"bind_skill": 26856,
|
128 |
"tick": 3
|
129 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
36453: {
|
131 |
"skill_class": PhysicalDamage,
|
132 |
"skill_name": "朝仪万汇",
|
schools/shan_hai_xin_jue/talents.py
CHANGED
@@ -35,10 +35,10 @@ class 孰湖(Gain):
|
|
35 |
|
36 |
class 桑柘(Gain):
|
37 |
def add_skills(self, skills: Dict[int, Skill]):
|
38 |
-
skills[
|
39 |
|
40 |
def sub_skills(self, skills: Dict[int, Skill]):
|
41 |
-
skills[
|
42 |
|
43 |
|
44 |
class 卢令(Gain):
|
|
|
35 |
|
36 |
class 桑柘(Gain):
|
37 |
def add_skills(self, skills: Dict[int, Skill]):
|
38 |
+
skills[26856].tick += 1
|
39 |
|
40 |
def sub_skills(self, skills: Dict[int, Skill]):
|
41 |
+
skills[26856].tick -= 1
|
42 |
|
43 |
|
44 |
class 卢令(Gain):
|
schools/tai_xu_jian_yi/buffs.py
CHANGED
@@ -22,6 +22,7 @@ BUFFS: Dict[int, Buff | dict] = {
|
|
22 |
},
|
23 |
2757: {
|
24 |
"buff_name": "紫气东来",
|
|
|
25 |
"gain_attributes": {
|
26 |
"physical_attack_power_gain": [256, 256, 512, 256],
|
27 |
"magical_attack_power_gain": [256, 256, 512, 256],
|
|
|
22 |
},
|
23 |
2757: {
|
24 |
"buff_name": "紫气东来",
|
25 |
+
"frame_shift": -1,
|
26 |
"gain_attributes": {
|
27 |
"physical_attack_power_gain": [256, 256, 512, 256],
|
28 |
"magical_attack_power_gain": [256, 256, 512, 256],
|
schools/tai_xu_jian_yi/skills.py
CHANGED
@@ -25,14 +25,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
25 |
"skill_name": "叠刃(DOT)",
|
26 |
"damage_base": 10,
|
27 |
"attack_power_cof": 58 * 1.15 * 1.1 * 1.1,
|
28 |
-
"interval": 48
|
|
|
|
|
29 |
},
|
30 |
600: {
|
31 |
"skill_class": DotSkill,
|
32 |
"skill_name": "叠刃",
|
33 |
-
"bind_skill": 748
|
34 |
-
"max_stack": 5,
|
35 |
-
"tick": 8
|
36 |
},
|
37 |
**{
|
38 |
skill_id: {
|
@@ -98,13 +98,13 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
98 |
"skill_name": "人剑合一(DOT)",
|
99 |
"damage_base": 16,
|
100 |
"attack_power_cof": 450,
|
101 |
-
"interval": 48
|
|
|
102 |
},
|
103 |
37453: {
|
104 |
"skill_class": DotSkill,
|
105 |
"skill_name": "人剑合一",
|
106 |
-
"bind_skill": 889
|
107 |
-
"tick": 4
|
108 |
},
|
109 |
21979: {
|
110 |
"skill_class": PhysicalDamage,
|
@@ -148,14 +148,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
148 |
"skill_name": "万象归元(DOT)",
|
149 |
"damage_base": 10,
|
150 |
"attack_power_cof": 450,
|
151 |
-
"interval": 48
|
|
|
|
|
152 |
},
|
153 |
30944: {
|
154 |
"skill_class": DotSkill,
|
155 |
"skill_name": "万象归元",
|
156 |
-
"bind_skill": 23170
|
157 |
-
"max_stack": 3,
|
158 |
-
"tick": 10
|
159 |
}
|
160 |
}
|
161 |
|
|
|
25 |
"skill_name": "叠刃(DOT)",
|
26 |
"damage_base": 10,
|
27 |
"attack_power_cof": 58 * 1.15 * 1.1 * 1.1,
|
28 |
+
"interval": 48,
|
29 |
+
"max_stack": 5,
|
30 |
+
"tick": 8
|
31 |
},
|
32 |
600: {
|
33 |
"skill_class": DotSkill,
|
34 |
"skill_name": "叠刃",
|
35 |
+
"bind_skill": 748
|
|
|
|
|
36 |
},
|
37 |
**{
|
38 |
skill_id: {
|
|
|
98 |
"skill_name": "人剑合一(DOT)",
|
99 |
"damage_base": 16,
|
100 |
"attack_power_cof": 450,
|
101 |
+
"interval": 48,
|
102 |
+
"tick": 4
|
103 |
},
|
104 |
37453: {
|
105 |
"skill_class": DotSkill,
|
106 |
"skill_name": "人剑合一",
|
107 |
+
"bind_skill": 889
|
|
|
108 |
},
|
109 |
21979: {
|
110 |
"skill_class": PhysicalDamage,
|
|
|
148 |
"skill_name": "万象归元(DOT)",
|
149 |
"damage_base": 10,
|
150 |
"attack_power_cof": 450,
|
151 |
+
"interval": 48,
|
152 |
+
"max_stack": 3,
|
153 |
+
"tick": 10
|
154 |
},
|
155 |
30944: {
|
156 |
"skill_class": DotSkill,
|
157 |
"skill_name": "万象归元",
|
158 |
+
"bind_skill": 23170
|
|
|
|
|
159 |
}
|
160 |
}
|
161 |
|
schools/tai_xu_jian_yi/talents.py
CHANGED
@@ -29,10 +29,10 @@ class 无意(Gain):
|
|
29 |
|
30 |
class 裂云(Gain):
|
31 |
def add_skills(self, skills: Dict[int, Skill]):
|
32 |
-
skills[
|
33 |
|
34 |
def sub_skills(self, skills: Dict[int, Skill]):
|
35 |
-
skills[
|
36 |
|
37 |
|
38 |
class 虚极(Gain):
|
|
|
29 |
|
30 |
class 裂云(Gain):
|
31 |
def add_skills(self, skills: Dict[int, Skill]):
|
32 |
+
skills[748].max_stack += 2
|
33 |
|
34 |
def sub_skills(self, skills: Dict[int, Skill]):
|
35 |
+
skills[748].max_stack -= 2
|
36 |
|
37 |
|
38 |
class 虚极(Gain):
|
schools/tian_luo_gui_dao/buffs.py
CHANGED
@@ -63,12 +63,12 @@ BUFFS = {
|
|
63 |
} for skill_id in (3313, 36502, 30894, 30727)
|
64 |
}
|
65 |
},
|
66 |
-
24668: {
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
}
|
72 |
}
|
73 |
|
74 |
for buff_id, detail in BUFFS.items():
|
|
|
63 |
} for skill_id in (3313, 36502, 30894, 30727)
|
64 |
}
|
65 |
},
|
66 |
+
# 24668: {
|
67 |
+
# "buff_name": "杀机断魂",
|
68 |
+
# "gain_attributes": {
|
69 |
+
# "all_damage_addition": 103
|
70 |
+
# }
|
71 |
+
# }
|
72 |
}
|
73 |
|
74 |
for buff_id, detail in BUFFS.items():
|
schools/tian_luo_gui_dao/skills.py
CHANGED
@@ -65,14 +65,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
65 |
"skill_class": MixingDotDamage,
|
66 |
"skill_name": "化血(DOT)",
|
67 |
"damage_base": 90,
|
68 |
-
"attack_power_cof": 140 * 1.3 * 1.05*2.0*1.1,
|
69 |
-
"interval": 48
|
|
|
70 |
},
|
71 |
21266: {
|
72 |
"skill_class": DotSkill,
|
73 |
"skill_name": "化血",
|
74 |
-
"bind_skill": 14611
|
75 |
-
"tick": 16
|
76 |
},
|
77 |
3105: {
|
78 |
"skill_class": MixingDamage,
|
|
|
65 |
"skill_class": MixingDotDamage,
|
66 |
"skill_name": "化血(DOT)",
|
67 |
"damage_base": 90,
|
68 |
+
"attack_power_cof": 140 * 1.3 * 1.05 * 2.0 * 1.1,
|
69 |
+
"interval": 48,
|
70 |
+
"tick": 16
|
71 |
},
|
72 |
21266: {
|
73 |
"skill_class": DotSkill,
|
74 |
"skill_name": "化血",
|
75 |
+
"bind_skill": 14611
|
|
|
76 |
},
|
77 |
3105: {
|
78 |
"skill_class": MixingDamage,
|
schools/tian_luo_gui_dao/talents.py
CHANGED
@@ -14,12 +14,16 @@ class 流星赶月(Gain):
|
|
14 |
skills[3228].skill_critical_power -= 102
|
15 |
|
16 |
|
17 |
-
class
|
18 |
def add_skills(self, skills: Dict[int, Skill]):
|
19 |
-
|
|
|
|
|
20 |
|
21 |
def sub_skills(self, skills: Dict[int, Skill]):
|
22 |
-
|
|
|
|
|
23 |
|
24 |
|
25 |
TALENT_GAINS: Dict[int, Gain] = {
|
@@ -30,7 +34,7 @@ TALENT_GAINS: Dict[int, Gain] = {
|
|
30 |
37326: 流星赶月("流星赶月"),
|
31 |
6451: Gain("聚精凝神"),
|
32 |
18249: Gain("化血迷心"),
|
33 |
-
33134:
|
34 |
6461: Gain("秋风散影"),
|
35 |
37327: Gain("云合影从"),
|
36 |
14856: Gain("曙色催寒"),
|
|
|
14 |
skills[3228].skill_critical_power -= 102
|
15 |
|
16 |
|
17 |
+
class 杀机断魂(Gain):
|
18 |
def add_skills(self, skills: Dict[int, Skill]):
|
19 |
+
for skill_id in (36502, 30894, 30727):
|
20 |
+
skills[skill_id].skill_damage_addition += 103 * 2 * 3
|
21 |
+
skills[3313].skill_damage_addition += 103 * 3
|
22 |
|
23 |
def sub_skills(self, skills: Dict[int, Skill]):
|
24 |
+
for skill_id in (36502, 30894, 30727):
|
25 |
+
skills[skill_id].skill_damage_addition -= 103 * 2 * 3
|
26 |
+
skills[3313].skill_damage_addition -= 103 * 3
|
27 |
|
28 |
|
29 |
TALENT_GAINS: Dict[int, Gain] = {
|
|
|
34 |
37326: 流星赶月("流星赶月"),
|
35 |
6451: Gain("聚精凝神"),
|
36 |
18249: Gain("化血迷心"),
|
37 |
+
33134: 杀机断魂("杀机断魂"),
|
38 |
6461: Gain("秋风散影"),
|
39 |
37327: Gain("云合影从"),
|
40 |
14856: Gain("曙色催寒"),
|
schools/wu_fang/skills.py
CHANGED
@@ -37,14 +37,14 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
37 |
"skill_name": "逆乱(DOT)",
|
38 |
"damage_base": 95,
|
39 |
"attack_power_cof": 90 * 1.5 * 0.8 * 1.05 * 1.1,
|
40 |
-
"interval": 32
|
|
|
|
|
41 |
},
|
42 |
27560: {
|
43 |
"skill_class": DotSkill,
|
44 |
"skill_name": "逆乱",
|
45 |
-
"bind_skill": 20052
|
46 |
-
"max_stack": 8,
|
47 |
-
"tick": 7
|
48 |
},
|
49 |
27552: {
|
50 |
"skill_class": MagicalDamage,
|
|
|
37 |
"skill_name": "逆乱(DOT)",
|
38 |
"damage_base": 95,
|
39 |
"attack_power_cof": 90 * 1.5 * 0.8 * 1.05 * 1.1,
|
40 |
+
"interval": 32,
|
41 |
+
"max_stack": 8,
|
42 |
+
"tick": 7
|
43 |
},
|
44 |
27560: {
|
45 |
"skill_class": DotSkill,
|
46 |
"skill_name": "逆乱",
|
47 |
+
"bind_skill": 20052
|
|
|
|
|
48 |
},
|
49 |
27552: {
|
50 |
"skill_class": MagicalDamage,
|
schools/wu_fang/talents.py
CHANGED
@@ -15,10 +15,10 @@ class 鸩羽(Gain):
|
|
15 |
|
16 |
class 疾根(Gain):
|
17 |
def add_skills(self, skills: Dict[int, Skill]):
|
18 |
-
skills[
|
19 |
|
20 |
def sub_skills(self, skills: Dict[int, Skill]):
|
21 |
-
skills[
|
22 |
|
23 |
|
24 |
TALENT_GAINS: Dict[int, Gain] = {
|
|
|
15 |
|
16 |
class 疾根(Gain):
|
17 |
def add_skills(self, skills: Dict[int, Skill]):
|
18 |
+
skills[20052].tick += 1
|
19 |
|
20 |
def sub_skills(self, skills: Dict[int, Skill]):
|
21 |
+
skills[20052].tick -= 1
|
22 |
|
23 |
|
24 |
TALENT_GAINS: Dict[int, Gain] = {
|
schools/yi_jin_jing/skills.py
CHANGED
@@ -79,7 +79,8 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
79 |
"skill_name": "横扫六合(DOT)",
|
80 |
"damage_base": 45,
|
81 |
"attack_power_cof": 70 * 1.2 * 1.65 * 1.15 * 1.15 * 1.05 * 1.25 * 1.1 * 1.1,
|
82 |
-
"interval": 32
|
|
|
83 |
},
|
84 |
3810: {
|
85 |
"skill_class": type("Mixing", (MagicalDamage, DotSkill), {}),
|
@@ -88,8 +89,7 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
88 |
66, 68, 71, 73, 75, 36, 39, 41, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
|
89 |
60, 61, 62, 63, 64, 66, 68, 71, 73, 75],
|
90 |
"attack_power_cof": 70 * 1.2 * 1.65 * 1.15 * 1.15 * 1.05 * 1.25 * 1.1 * 1.1,
|
91 |
-
"bind_skill": 743
|
92 |
-
"tick": 6 + 3
|
93 |
},
|
94 |
3848: {
|
95 |
"skill_class": type("Mixing", (MagicalDamage, BuffSkill), {}),
|
|
|
79 |
"skill_name": "横扫六合(DOT)",
|
80 |
"damage_base": 45,
|
81 |
"attack_power_cof": 70 * 1.2 * 1.65 * 1.15 * 1.15 * 1.05 * 1.25 * 1.1 * 1.1,
|
82 |
+
"interval": 32,
|
83 |
+
"tick": 6 + 3
|
84 |
},
|
85 |
3810: {
|
86 |
"skill_class": type("Mixing", (MagicalDamage, DotSkill), {}),
|
|
|
89 |
66, 68, 71, 73, 75, 36, 39, 41, 43, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
|
90 |
60, 61, 62, 63, 64, 66, 68, 71, 73, 75],
|
91 |
"attack_power_cof": 70 * 1.2 * 1.65 * 1.15 * 1.15 * 1.05 * 1.25 * 1.1 * 1.1,
|
92 |
+
"bind_skill": 743
|
|
|
93 |
},
|
94 |
3848: {
|
95 |
"skill_class": type("Mixing", (MagicalDamage, BuffSkill), {}),
|
schools/zi_xia_gong/__init__.py
CHANGED
@@ -7,4 +7,4 @@ from schools.zi_xia_gong.attribute import ZiXiaGong
|
|
7 |
|
8 |
|
9 |
def prepare(self, player_id):
|
10 |
-
self.
|
|
|
7 |
|
8 |
|
9 |
def prepare(self, player_id):
|
10 |
+
self.player_buffs[player_id][(17918, 1)] = 1
|
schools/zi_xia_gong/buffs.py
CHANGED
@@ -4,14 +4,6 @@ from base.buff import Buff
|
|
4 |
from general.buffs import GENERAL_BUFFS
|
5 |
|
6 |
BUFFS: Dict[int, Buff | dict] = {
|
7 |
-
375: {
|
8 |
-
"buff_name": "破苍穹",
|
9 |
-
"gain_attributes": {
|
10 |
-
"magical_critical_strike_gain": [300, 350, 400, 450, 0, 600, 700, 800, 900, 500, 500, 1000, 500, 1000],
|
11 |
-
"magical_critical_power_gain": [61, 71, 81, 82, 102, 122, 143, 163, 184, 102, 102, 204, 102, 204],
|
12 |
-
"all_shield_ignore": [0] * 12 + [614] * 2
|
13 |
-
}
|
14 |
-
},
|
15 |
1439: {
|
16 |
"buff_name": "气涌",
|
17 |
"activate": False,
|
@@ -20,6 +12,14 @@ BUFFS: Dict[int, Buff | dict] = {
|
|
20 |
"magical_critical_power_gain": 41
|
21 |
}
|
22 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
1908: {
|
24 |
"buff_name": "会神",
|
25 |
"gain_attributes": {
|
@@ -28,6 +28,7 @@ BUFFS: Dict[int, Buff | dict] = {
|
|
28 |
},
|
29 |
2757: {
|
30 |
"buff_name": "紫气东来",
|
|
|
31 |
"gain_attributes": {
|
32 |
"physical_attack_power_gain": [256, 256, 512, 256],
|
33 |
"magical_attack_power_gain": [256, 256, 512, 256],
|
@@ -36,7 +37,7 @@ BUFFS: Dict[int, Buff | dict] = {
|
|
36 |
}
|
37 |
},
|
38 |
9966: {
|
39 |
-
"buff_name": "
|
40 |
"gain_skills": {
|
41 |
18670: {
|
42 |
"skill_damage_addition": [358, 716, 1075, 1433]
|
@@ -44,7 +45,7 @@ BUFFS: Dict[int, Buff | dict] = {
|
|
44 |
}
|
45 |
},
|
46 |
# 12550: {
|
47 |
-
# "buff_name": "
|
48 |
# "gain_skills": {
|
49 |
# 896: {
|
50 |
# "skill_damage_addition": [40, 81, 122, 163, 204]
|
@@ -52,7 +53,7 @@ BUFFS: Dict[int, Buff | dict] = {
|
|
52 |
# }
|
53 |
# },
|
54 |
# 12551: {
|
55 |
-
# "buff_name": "
|
56 |
# "gain_skills": {
|
57 |
# skill_id: {
|
58 |
# "skill_damage_addition": [40, 81, 122, 163, 204]
|
@@ -60,7 +61,7 @@ BUFFS: Dict[int, Buff | dict] = {
|
|
60 |
# }
|
61 |
# },
|
62 |
17918: {
|
63 |
-
"buff_name": "
|
64 |
"gain_skills": {
|
65 |
skill_id: {
|
66 |
"skill_pve_addition": 1331
|
|
|
4 |
from general.buffs import GENERAL_BUFFS
|
5 |
|
6 |
BUFFS: Dict[int, Buff | dict] = {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
1439: {
|
8 |
"buff_name": "气涌",
|
9 |
"activate": False,
|
|
|
12 |
"magical_critical_power_gain": 41
|
13 |
}
|
14 |
},
|
15 |
+
375: {
|
16 |
+
"buff_name": "破苍穹",
|
17 |
+
"gain_attributes": {
|
18 |
+
"magical_critical_strike_gain": [300, 350, 400, 450, 0, 600, 700, 800, 900, 500, 500, 1000, 500, 1000],
|
19 |
+
"magical_critical_power_gain": [61, 71, 81, 82, 102, 122, 143, 163, 184, 102, 102, 204, 102, 204],
|
20 |
+
"all_shield_ignore": [0] * 12 + [614] * 2
|
21 |
+
}
|
22 |
+
},
|
23 |
1908: {
|
24 |
"buff_name": "会神",
|
25 |
"gain_attributes": {
|
|
|
28 |
},
|
29 |
2757: {
|
30 |
"buff_name": "紫气东来",
|
31 |
+
"frame_shift": -1,
|
32 |
"gain_attributes": {
|
33 |
"physical_attack_power_gain": [256, 256, 512, 256],
|
34 |
"magical_attack_power_gain": [256, 256, 512, 256],
|
|
|
37 |
}
|
38 |
},
|
39 |
9966: {
|
40 |
+
"buff_name": "同尘",
|
41 |
"gain_skills": {
|
42 |
18670: {
|
43 |
"skill_damage_addition": [358, 716, 1075, 1433]
|
|
|
45 |
}
|
46 |
},
|
47 |
# 12550: {
|
48 |
+
# "buff_name": "跬步",
|
49 |
# "gain_skills": {
|
50 |
# 896: {
|
51 |
# "skill_damage_addition": [40, 81, 122, 163, 204]
|
|
|
53 |
# }
|
54 |
# },
|
55 |
# 12551: {
|
56 |
+
# "buff_name": "跬步",
|
57 |
# "gain_skills": {
|
58 |
# skill_id: {
|
59 |
# "skill_damage_addition": [40, 81, 122, 163, 204]
|
|
|
61 |
# }
|
62 |
# },
|
63 |
17918: {
|
64 |
+
"buff_name": "破势",
|
65 |
"gain_skills": {
|
66 |
skill_id: {
|
67 |
"skill_pve_addition": 1331
|
schools/zi_xia_gong/gains.py
CHANGED
@@ -22,6 +22,6 @@ GAINS = {
|
|
22 |
# 无界特效1
|
23 |
17300: Gain(),
|
24 |
# 无界特效2
|
25 |
-
|
26 |
**EQUIPMENT_GAINS,
|
27 |
}
|
|
|
22 |
# 无界特效1
|
23 |
17300: Gain(),
|
24 |
# 无界特效2
|
25 |
+
17312: Gain(),
|
26 |
**EQUIPMENT_GAINS,
|
27 |
}
|
schools/zi_xia_gong/skills.py
CHANGED
@@ -4,6 +4,23 @@ from base.skill import Skill, DotSkill, PhysicalDamage, MagicalDamage, MagicalDo
|
|
4 |
from general.skills import GENERAL_SKILLS
|
5 |
|
6 |
SKILLS: Dict[int, Skill | dict] = {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
303: {
|
8 |
"skill_class": MagicalDamage,
|
9 |
"skill_name": "三才化生",
|
@@ -45,20 +62,6 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
45 |
"attack_power_cof": [(14 * i * 0.8) for i in range(1, 11)],
|
46 |
} for skill_id in (6091, 6092, 6093, 6094, 6095, 6096, 6097, 6098, 6099, 6100)
|
47 |
},
|
48 |
-
6424: {
|
49 |
-
"skill_class": MagicalDotDamage,
|
50 |
-
"skill_name": "气竭(DOT)",
|
51 |
-
"damage_base": 10,
|
52 |
-
"attack_power_cof": 229 * 1.7,
|
53 |
-
"interval": 48
|
54 |
-
},
|
55 |
-
18121: {
|
56 |
-
"skill_class": PhysicalDamage,
|
57 |
-
"skill_name": "三柴剑法",
|
58 |
-
"attack_power_cof": 16,
|
59 |
-
"weapon_damage_cof": 1024,
|
60 |
-
"skill_damage_addition": 205
|
61 |
-
},
|
62 |
**{
|
63 |
skill_id: {
|
64 |
"skill_class": MagicalDamage,
|
@@ -81,6 +84,13 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
81 |
"damage_rand": 78,
|
82 |
"attack_power_cof": 300 * 1.1 * 1.15 * 1.1 * 1.12
|
83 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
25770: {
|
85 |
"skill_class": MagicalDamage,
|
86 |
"skill_name": "四象轮回·神兵",
|
@@ -88,30 +98,20 @@ SKILLS: Dict[int, Skill | dict] = {
|
|
88 |
"damage_rand": 2,
|
89 |
"attack_power_cof": 65
|
90 |
},
|
91 |
-
|
92 |
-
"skill_class":
|
93 |
-
"skill_name": "
|
94 |
-
"
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
]
|
100 |
},
|
101 |
33592: {
|
102 |
"skill_class": DotSkill,
|
103 |
"skill_name": "气竭",
|
104 |
-
"bind_skill": 6424
|
105 |
-
"max_stack": 3,
|
106 |
-
"tick": 10
|
107 |
},
|
108 |
-
36439: {
|
109 |
-
"skill_class": MagicalDamage,
|
110 |
-
"skill_name": "颠越苍穹击",
|
111 |
-
"damage_base": 1038,
|
112 |
-
"damage_rand": 104,
|
113 |
-
"attack_power_cof": 155 * 0.9
|
114 |
-
}
|
115 |
}
|
116 |
|
117 |
for skill_id, detail in SKILLS.items():
|
|
|
4 |
from general.skills import GENERAL_SKILLS
|
5 |
|
6 |
SKILLS: Dict[int, Skill | dict] = {
|
7 |
+
32813: {
|
8 |
+
"skill_class": MagicalDamage,
|
9 |
+
"skill_name": "破",
|
10 |
+
"surplus_cof": [
|
11 |
+
1024 * 1024 * (0.06 - 1),
|
12 |
+
1024 * 1024 * (0.30 - 1),
|
13 |
+
1024 * 1024 * (0.83 - 1),
|
14 |
+
1024 * 1024 * (0.60 - 1)
|
15 |
+
]
|
16 |
+
},
|
17 |
+
18121: {
|
18 |
+
"skill_class": PhysicalDamage,
|
19 |
+
"skill_name": "三柴剑法",
|
20 |
+
"attack_power_cof": 16,
|
21 |
+
"weapon_damage_cof": 1024,
|
22 |
+
"skill_damage_addition": 205
|
23 |
+
},
|
24 |
303: {
|
25 |
"skill_class": MagicalDamage,
|
26 |
"skill_name": "三才化生",
|
|
|
62 |
"attack_power_cof": [(14 * i * 0.8) for i in range(1, 11)],
|
63 |
} for skill_id in (6091, 6092, 6093, 6094, 6095, 6096, 6097, 6098, 6099, 6100)
|
64 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
**{
|
66 |
skill_id: {
|
67 |
"skill_class": MagicalDamage,
|
|
|
84 |
"damage_rand": 78,
|
85 |
"attack_power_cof": 300 * 1.1 * 1.15 * 1.1 * 1.12
|
86 |
},
|
87 |
+
36439: {
|
88 |
+
"skill_class": MagicalDamage,
|
89 |
+
"skill_name": "颠越苍穹击",
|
90 |
+
"damage_base": 1038,
|
91 |
+
"damage_rand": 104,
|
92 |
+
"attack_power_cof": 155 * 0.9
|
93 |
+
},
|
94 |
25770: {
|
95 |
"skill_class": MagicalDamage,
|
96 |
"skill_name": "四象轮回·神兵",
|
|
|
98 |
"damage_rand": 2,
|
99 |
"attack_power_cof": 65
|
100 |
},
|
101 |
+
6424: {
|
102 |
+
"skill_class": MagicalDotDamage,
|
103 |
+
"skill_name": "气竭(DOT)",
|
104 |
+
"damage_base": 10,
|
105 |
+
"attack_power_cof": 229 * 1.7,
|
106 |
+
"interval": 48,
|
107 |
+
"max_stack": 3,
|
108 |
+
"tick": 10
|
|
|
109 |
},
|
110 |
33592: {
|
111 |
"skill_class": DotSkill,
|
112 |
"skill_name": "气竭",
|
113 |
+
"bind_skill": 6424
|
|
|
|
|
114 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
}
|
116 |
|
117 |
for skill_id, detail in SKILLS.items():
|
schools/zi_xia_gong/talents.py
CHANGED
@@ -65,7 +65,7 @@ TALENT_GAINS: Dict[int, Gain] = {
|
|
65 |
5846: Gain("无形"),
|
66 |
23614: Gain("归元"),
|
67 |
5819: Gain("同尘"),
|
68 |
-
18695:
|
69 |
32411: Gain("正气"),
|
70 |
14834: Gain("抱阳"),
|
71 |
18679: Gain("浮生"),
|
|
|
65 |
5846: Gain("无形"),
|
66 |
23614: Gain("归元"),
|
67 |
5819: Gain("同尘"),
|
68 |
+
18695: Gain("跬步"),
|
69 |
32411: Gain("正气"),
|
70 |
14834: Gain("抱阳"),
|
71 |
18679: Gain("浮生"),
|
utils/damage.py
CHANGED
@@ -8,7 +8,6 @@ def defense_result(shield_base, shield_gain, shield_ignore, shield_constant):
|
|
8 |
shield = shield_base
|
9 |
shield += int(shield * shield_gain / BINARY_SCALE)
|
10 |
shield -= int(shield * shield_ignore / BINARY_SCALE)
|
11 |
-
shield = max(0, shield)
|
12 |
return int(shield * BINARY_SCALE / (shield + shield_constant))
|
13 |
|
14 |
|
|
|
8 |
shield = shield_base
|
9 |
shield += int(shield * shield_gain / BINARY_SCALE)
|
10 |
shield -= int(shield * shield_ignore / BINARY_SCALE)
|
|
|
11 |
return int(shield * BINARY_SCALE / (shield + shield_constant))
|
12 |
|
13 |
|
utils/parser.py
CHANGED
@@ -4,7 +4,8 @@ from base.constant import FRAME_PER_SECOND
|
|
4 |
from schools import *
|
5 |
from utils.lua import parse
|
6 |
|
7 |
-
FRAME_TYPE,
|
|
|
8 |
CASTER_ID_TYPE = PLAYER_ID_TYPE | PET_ID_TYPE
|
9 |
SKILL_ID_TYPE, SKILL_LEVEL_TYPE, SKILL_STACK_TYPE, SKILL_CRITICAL_TYPE = int, int, int, bool
|
10 |
SKILL_TYPE = Tuple[SKILL_ID_TYPE, SKILL_LEVEL_TYPE, SKILL_STACK_TYPE]
|
@@ -39,14 +40,17 @@ class Parser:
|
|
39 |
current_caster: CASTER_ID_TYPE
|
40 |
current_target: TARGET_ID_TYPE
|
41 |
current_skill: SKILL_ID_TYPE
|
|
|
42 |
current_frame: FRAME_TYPE
|
|
|
43 |
|
44 |
id2name: Dict[PLAYER_ID_TYPE | TARGET_ID_TYPE, PLAYER_NAME_TYPE]
|
45 |
name2id: Dict[PLAYER_NAME_TYPE, PLAYER_ID_TYPE | TARGET_ID_TYPE]
|
46 |
pets: Dict[PET_ID_TYPE, PLAYER_ID_TYPE]
|
47 |
records: Dict[PLAYER_ID_TYPE, Dict[TARGET_ID_TYPE, RECORD_TYPE]]
|
48 |
|
49 |
-
|
|
|
50 |
hidden_buffs: Dict[TARGET_ID_TYPE, Dict[PLAYER_ID_TYPE, Dict[BUFF_TYPE, FRAME_TYPE]]]
|
51 |
|
52 |
player_buffs: Dict[PLAYER_ID_TYPE, Dict[BUFF_TYPE, BUFF_STACK_TYPE]]
|
@@ -127,6 +131,7 @@ class Parser:
|
|
127 |
|
128 |
def reset(self):
|
129 |
self.current_frame = 0
|
|
|
130 |
|
131 |
self.id2name = {}
|
132 |
self.name2id = {}
|
@@ -135,7 +140,8 @@ class Parser:
|
|
135 |
self.records = defaultdict(lambda: defaultdict(lambda: defaultdict(lambda: defaultdict(list))))
|
136 |
|
137 |
self.hidden_buffs = defaultdict(lambda: defaultdict(dict))
|
138 |
-
self.
|
|
|
139 |
|
140 |
self.player_buffs = defaultdict(dict)
|
141 |
self.target_buffs = defaultdict(lambda: defaultdict(dict))
|
@@ -219,16 +225,28 @@ class Parser:
|
|
219 |
buff_id, buff_stack, buff_level = int(detail[4]), int(detail[5]), int(detail[8])
|
220 |
if buff_id not in self.players[player_id].buffs:
|
221 |
return
|
222 |
-
|
223 |
-
frame_shift
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
|
|
229 |
if frame > self.current_frame:
|
230 |
break
|
231 |
-
for player_id, shift_buffs in self.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
232 |
for buff, buff_stack in shift_buffs.items():
|
233 |
if buff_stack:
|
234 |
self.player_buffs[player_id][buff] = buff_stack
|
@@ -337,13 +355,19 @@ class Parser:
|
|
337 |
|
338 |
for row in rows:
|
339 |
self.current_frame = int(row[1])
|
|
|
340 |
if row[4] == "13":
|
341 |
self.parse_shift_buff(row[-1])
|
342 |
|
343 |
for row in rows:
|
344 |
-
|
345 |
-
|
346 |
-
|
|
|
|
|
|
|
|
|
|
|
347 |
if row[4] == "8":
|
348 |
self.parse_pet(row[-1])
|
349 |
elif row[4] == "13":
|
|
|
4 |
from schools import *
|
5 |
from utils.lua import parse
|
6 |
|
7 |
+
FRAME_TYPE, SECOND_TYPE = int, int
|
8 |
+
PLAYER_ID_TYPE, PLAYER_NAME_TYPE, TARGET_ID_TYPE, PET_ID_TYPE = int, int, int, int
|
9 |
CASTER_ID_TYPE = PLAYER_ID_TYPE | PET_ID_TYPE
|
10 |
SKILL_ID_TYPE, SKILL_LEVEL_TYPE, SKILL_STACK_TYPE, SKILL_CRITICAL_TYPE = int, int, int, bool
|
11 |
SKILL_TYPE = Tuple[SKILL_ID_TYPE, SKILL_LEVEL_TYPE, SKILL_STACK_TYPE]
|
|
|
40 |
current_caster: CASTER_ID_TYPE
|
41 |
current_target: TARGET_ID_TYPE
|
42 |
current_skill: SKILL_ID_TYPE
|
43 |
+
|
44 |
current_frame: FRAME_TYPE
|
45 |
+
current_second: SECOND_TYPE
|
46 |
|
47 |
id2name: Dict[PLAYER_ID_TYPE | TARGET_ID_TYPE, PLAYER_NAME_TYPE]
|
48 |
name2id: Dict[PLAYER_NAME_TYPE, PLAYER_ID_TYPE | TARGET_ID_TYPE]
|
49 |
pets: Dict[PET_ID_TYPE, PLAYER_ID_TYPE]
|
50 |
records: Dict[PLAYER_ID_TYPE, Dict[TARGET_ID_TYPE, RECORD_TYPE]]
|
51 |
|
52 |
+
frame_shift_buffs: Dict[FRAME_TYPE, Dict[PLAYER_ID_TYPE, Dict[BUFF_TYPE, BUFF_STACK_TYPE]]]
|
53 |
+
second_shift_buffs: Dict[SECOND_TYPE, Dict[PLAYER_ID_TYPE, Dict[BUFF_TYPE, BUFF_STACK_TYPE]]]
|
54 |
hidden_buffs: Dict[TARGET_ID_TYPE, Dict[PLAYER_ID_TYPE, Dict[BUFF_TYPE, FRAME_TYPE]]]
|
55 |
|
56 |
player_buffs: Dict[PLAYER_ID_TYPE, Dict[BUFF_TYPE, BUFF_STACK_TYPE]]
|
|
|
131 |
|
132 |
def reset(self):
|
133 |
self.current_frame = 0
|
134 |
+
self.current_second = 0
|
135 |
|
136 |
self.id2name = {}
|
137 |
self.name2id = {}
|
|
|
140 |
self.records = defaultdict(lambda: defaultdict(lambda: defaultdict(lambda: defaultdict(list))))
|
141 |
|
142 |
self.hidden_buffs = defaultdict(lambda: defaultdict(dict))
|
143 |
+
self.frame_shift_buffs = defaultdict(lambda: defaultdict(dict))
|
144 |
+
self.second_shift_buffs = defaultdict(lambda: defaultdict(dict))
|
145 |
|
146 |
self.player_buffs = defaultdict(dict)
|
147 |
self.target_buffs = defaultdict(lambda: defaultdict(dict))
|
|
|
225 |
buff_id, buff_stack, buff_level = int(detail[4]), int(detail[5]), int(detail[8])
|
226 |
if buff_id not in self.players[player_id].buffs:
|
227 |
return
|
228 |
+
buff = self.players[player_id].buffs[buff_id]
|
229 |
+
if frame_shift := buff.frame_shift:
|
230 |
+
self.frame_shift_buffs[self.current_frame + frame_shift][player_id][(buff_id, buff_level)] = buff_stack
|
231 |
+
# elif second_shift := buff.second_shift:
|
232 |
+
# self.second_shift_buffs[self.current_second + second_shift][player_id][(buff_id, buff_level)] = buff_stack
|
233 |
+
|
234 |
+
def parse_frame_shift_status(self):
|
235 |
+
for frame in list(self.frame_shift_buffs):
|
236 |
if frame > self.current_frame:
|
237 |
break
|
238 |
+
for player_id, shift_buffs in self.frame_shift_buffs.pop(frame).items():
|
239 |
+
for buff, buff_stack in shift_buffs.items():
|
240 |
+
if buff_stack:
|
241 |
+
self.player_buffs[player_id][buff] = buff_stack
|
242 |
+
else:
|
243 |
+
self.player_buffs[player_id].pop(buff, None)
|
244 |
+
|
245 |
+
def parse_second_shift_status(self):
|
246 |
+
for second in list(self.second_shift_buffs):
|
247 |
+
if second > self.current_second:
|
248 |
+
break
|
249 |
+
for player_id, shift_buffs in self.second_shift_buffs.pop(second).items():
|
250 |
for buff, buff_stack in shift_buffs.items():
|
251 |
if buff_stack:
|
252 |
self.player_buffs[player_id][buff] = buff_stack
|
|
|
355 |
|
356 |
for row in rows:
|
357 |
self.current_frame = int(row[1])
|
358 |
+
# self.current_second = int(row[3])
|
359 |
if row[4] == "13":
|
360 |
self.parse_shift_buff(row[-1])
|
361 |
|
362 |
for row in rows:
|
363 |
+
if (current_frame := int(row[1])) != self.current_frame:
|
364 |
+
self.current_frame = current_frame
|
365 |
+
self.parse_frame_shift_status()
|
366 |
+
self.parse_hidden_buffs()
|
367 |
+
# if (current_second := int(row[3])) != self.current_second:
|
368 |
+
# self.current_second = current_second
|
369 |
+
# self.parse_frame_shift_status()
|
370 |
+
|
371 |
if row[4] == "8":
|
372 |
self.parse_pet(row[-1])
|
373 |
elif row[4] == "13":
|