AngoHF commited on
Commit
c255694
·
1 Parent(s): 1467c05

5.7 commit

Browse files
base/attribute.py CHANGED
@@ -285,6 +285,7 @@ class Minor:
285
  magical_damage_addition: int = 0
286
 
287
  pve_addition: int = 0
 
288
 
289
  """ Minor Function """
290
 
 
285
  magical_damage_addition: int = 0
286
 
287
  pve_addition: int = 0
288
+ global_damage_factor: float = 1.
289
 
290
  """ Minor Function """
291
 
base/buff.py CHANGED
@@ -10,7 +10,7 @@ ATTR_DICT = Dict[str, Union[List[int], int]]
10
  @dataclass
11
  class Buff:
12
  buff_id: int
13
- buff_name: str
14
  buff_level: int = 0
15
  buff_stack: int = 1
16
 
@@ -31,6 +31,23 @@ class Buff:
31
  if self.gain_attributes is None:
32
  self.gain_attributes = {}
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  @property
35
  def display_name(self):
36
  return f"{self.buff_name}#{self.buff_id}-{self.buff_level}-{self.buff_stack}"
@@ -40,16 +57,24 @@ class Buff:
40
  value = values[self.buff_level - 1]
41
  else:
42
  value = values
 
43
  if self.stackable:
44
- return value * self.buff_stack
45
- else:
46
- return value
 
 
 
47
 
48
  def add_all(self, attribute: Attribute, skill: Skill):
49
  for attr, values in self.gain_attributes.items():
50
  setattr(attribute, attr, getattr(attribute, attr) + self.value(values))
51
  for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
52
- setattr(skill, attr, getattr(skill, attr) + self.value(values))
 
 
 
 
53
 
54
  def add_dot(self, attribute: Attribute, skill: Skill, snapshot: bool = True):
55
  for attr, values in self.gain_attributes.items():
@@ -57,18 +82,29 @@ class Buff:
57
  setattr(attribute, attr, getattr(attribute, attr) + self.value(values))
58
  elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
59
  setattr(attribute, attr, getattr(attribute, attr) + self.value(values))
60
-
61
  for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
62
  if snapshot and any(snapshot_attr in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
63
- setattr(skill, attr, getattr(skill, attr) + self.value(values))
 
 
 
 
64
  elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
65
- setattr(skill, attr, getattr(skill, attr) + self.value(values))
 
 
 
 
66
 
67
  def sub_all(self, attribute: Attribute, skill: Skill):
68
  for attr, values in self.gain_attributes.items():
69
  setattr(attribute, attr, getattr(attribute, attr) - self.value(values))
70
  for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
71
- setattr(skill, attr, getattr(skill, attr) - self.value(values))
 
 
 
 
72
 
73
  def sub_dot(self, attribute: Attribute, skill: Skill, snapshot: bool = True):
74
  for attr, values in self.gain_attributes.items():
@@ -78,6 +114,14 @@ class Buff:
78
  setattr(attribute, attr, getattr(attribute, attr) - self.value(values))
79
  for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
80
  if snapshot and any(snapshot_attr in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
81
- setattr(skill, attr, getattr(skill, attr) - self.value(values))
 
 
 
 
82
  elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
83
- setattr(skill, attr, getattr(skill, attr) - self.value(values))
 
 
 
 
 
10
  @dataclass
11
  class Buff:
12
  buff_id: int
13
+ _buff_name: Union[List[str], str] = ""
14
  buff_level: int = 0
15
  buff_stack: int = 1
16
 
 
31
  if self.gain_attributes is None:
32
  self.gain_attributes = {}
33
 
34
+ @property
35
+ def buff_name(self):
36
+ if not isinstance(self._buff_name, list):
37
+ return ""
38
+
39
+ if self.buff_level > len(self._buff_name):
40
+ return self._buff_name[-1]
41
+ else:
42
+ return self._buff_name[self.buff_level - 1]
43
+
44
+ @buff_name.setter
45
+ def buff_name(self, buff_name):
46
+ if isinstance(buff_name, list):
47
+ self._buff_name = buff_name
48
+ else:
49
+ self._buff_name = [buff_name]
50
+
51
  @property
52
  def display_name(self):
53
  return f"{self.buff_name}#{self.buff_id}-{self.buff_level}-{self.buff_stack}"
 
57
  value = values[self.buff_level - 1]
58
  else:
59
  value = values
60
+
61
  if self.stackable:
62
+ value = value * self.buff_stack
63
+
64
+ if isinstance(value, float):
65
+ value = 1 + value
66
+
67
+ return value
68
 
69
  def add_all(self, attribute: Attribute, skill: Skill):
70
  for attr, values in self.gain_attributes.items():
71
  setattr(attribute, attr, getattr(attribute, attr) + self.value(values))
72
  for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
73
+ value = self.value(values)
74
+ if isinstance(value, float):
75
+ setattr(skill, attr, getattr(skill, attr) * self.value(values))
76
+ else:
77
+ setattr(skill, attr, getattr(skill, attr) + self.value(values))
78
 
79
  def add_dot(self, attribute: Attribute, skill: Skill, snapshot: bool = True):
80
  for attr, values in self.gain_attributes.items():
 
82
  setattr(attribute, attr, getattr(attribute, attr) + self.value(values))
83
  elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
84
  setattr(attribute, attr, getattr(attribute, attr) + self.value(values))
 
85
  for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
86
  if snapshot and any(snapshot_attr in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
87
+ value = self.value(values)
88
+ if isinstance(value, float):
89
+ setattr(skill, attr, getattr(skill, attr) * self.value(values))
90
+ else:
91
+ setattr(skill, attr, getattr(skill, attr) + self.value(values))
92
  elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
93
+ value = self.value(values)
94
+ if isinstance(value, float):
95
+ setattr(skill, attr, getattr(skill, attr) * self.value(values))
96
+ else:
97
+ setattr(skill, attr, getattr(skill, attr) + self.value(values))
98
 
99
  def sub_all(self, attribute: Attribute, skill: Skill):
100
  for attr, values in self.gain_attributes.items():
101
  setattr(attribute, attr, getattr(attribute, attr) - self.value(values))
102
  for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
103
+ value = self.value(values)
104
+ if isinstance(value, float):
105
+ setattr(skill, attr, getattr(skill, attr) / self.value(values))
106
+ else:
107
+ setattr(skill, attr, getattr(skill, attr) - self.value(values))
108
 
109
  def sub_dot(self, attribute: Attribute, skill: Skill, snapshot: bool = True):
110
  for attr, values in self.gain_attributes.items():
 
114
  setattr(attribute, attr, getattr(attribute, attr) - self.value(values))
115
  for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
116
  if snapshot and any(snapshot_attr in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
117
+ value = self.value(values)
118
+ if isinstance(value, float):
119
+ setattr(skill, attr, getattr(skill, attr) / self.value(values))
120
+ else:
121
+ setattr(skill, attr, getattr(skill, attr) - self.value(values))
122
  elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
123
+ value = self.value(values)
124
+ if isinstance(value, float):
125
+ setattr(skill, attr, getattr(skill, attr) / self.value(values))
126
+ else:
127
+ setattr(skill, attr, getattr(skill, attr) - self.value(values))
base/constant.py CHANGED
@@ -66,5 +66,9 @@ def WEAPON_DAMAGE_COF(cof):
66
  return int(cof) / BINARY_SCALE
67
 
68
 
 
 
 
 
69
  def SURPLUS_COF(cof):
70
- return ((int(cof) + int(cof < 0)) / BINARY_SCALE + BINARY_SCALE) / BINARY_SCALE * SURPLUS_SCALE
 
66
  return int(cof) / BINARY_SCALE
67
 
68
 
69
+ def GLOBAL_DAMAGE_FACTOR(cof):
70
+ return ((int(cof) + int(cof < 0)) / BINARY_SCALE + BINARY_SCALE) / BINARY_SCALE
71
+
72
+
73
  def SURPLUS_COF(cof):
74
+ return GLOBAL_DAMAGE_FACTOR(cof) * SURPLUS_SCALE
base/recipe.py CHANGED
@@ -21,6 +21,16 @@ class IntervalRecipe(RecipeGain):
21
  skills[skill_id].interval -= self.value
22
 
23
 
 
 
 
 
 
 
 
 
 
 
24
  class DamageAdditionRecipe(RecipeGain):
25
  def add_skills(self, skills: Dict[int, Skill]):
26
  for skill_id in self.skill_ids:
@@ -55,6 +65,10 @@ def interval_recipe(skill_ids, value, name="减少运功时间"):
55
  return IntervalRecipe(name, skill_ids, value)
56
 
57
 
 
 
 
 
58
  def damage_addition_recipe(skill_ids, value, name="伤害增加"):
59
  return DamageAdditionRecipe(name, skill_ids, value)
60
 
 
21
  skills[skill_id].interval -= self.value
22
 
23
 
24
+ class AttackPowerRecipe(RecipeGain):
25
+ def add_skills(self, skills: Dict[int, Skill]):
26
+ for skill_id in self.skill_ids:
27
+ skills[skill_id].attack_power_cof_gain *= self.value
28
+
29
+ def sub_skills(self, skills: Dict[int, Skill]):
30
+ for skill_id in self.skill_ids:
31
+ skills[skill_id].attack_power_cof_gain /= self.value
32
+
33
+
34
  class DamageAdditionRecipe(RecipeGain):
35
  def add_skills(self, skills: Dict[int, Skill]):
36
  for skill_id in self.skill_ids:
 
65
  return IntervalRecipe(name, skill_ids, value)
66
 
67
 
68
+ def attack_power_recipe(skill_ids, value, name="系数增加"):
69
+ return AttackPowerRecipe(name, skill_ids, value)
70
+
71
+
72
  def damage_addition_recipe(skill_ids, value, name="伤害增加"):
73
  return DamageAdditionRecipe(name, skill_ids, value)
74
 
base/skill.py CHANGED
@@ -35,6 +35,8 @@ class Skill:
35
  surplus_cof_gain: float = 1.
36
  weapon_damage_cof_gain: float = 1.
37
 
 
 
38
  skill_damage_addition: int = 0
39
  skill_pve_addition: int = 0
40
  _skill_shield_gain: Union[List[int], int] = 0
@@ -151,7 +153,7 @@ class Skill:
151
  self._weapon_damage_cof = weapon_damage_cof
152
  else:
153
  self._weapon_damage_cof = [weapon_damage_cof]
154
-
155
  @property
156
  def skill_shield_gain(self):
157
  if not isinstance(self._skill_shield_gain, list):
@@ -237,6 +239,15 @@ class Damage(Skill):
237
  return skill_tuple, status_tuple
238
 
239
 
 
 
 
 
 
 
 
 
 
240
  class DotDamage(Damage):
241
  def record(self, skill_level, critical, parser):
242
  skill_tuple, status_tuple = super().record(skill_level, critical, parser)
@@ -269,7 +280,7 @@ class PhysicalSkill(Skill):
269
  self.attack_power_cof, attribute.physical_attack_power,
270
  self.weapon_damage_cof, attribute.weapon_damage,
271
  self.surplus_cof, attribute.surplus
272
- ) * self.skill_stack
273
 
274
  damage = damage_addition_result(damage, attribute.physical_damage_addition + self.skill_damage_addition)
275
  damage = overcome_result(damage, attribute.physical_overcome,
@@ -303,7 +314,7 @@ class MagicalSkill(Skill):
303
  self.attack_power_cof, attribute.magical_attack_power,
304
  self.weapon_damage_cof, attribute.weapon_damage,
305
  self.surplus_cof, attribute.surplus
306
- ) * self.skill_stack
307
 
308
  damage = damage_addition_result(damage, attribute.magical_damage_addition + self.skill_damage_addition)
309
  damage = overcome_result(damage, attribute.magical_overcome,
@@ -334,14 +345,14 @@ class MixingSkill(Skill):
334
  def __call__(self, attribute: Attribute):
335
  damage = init_result(
336
  self.damage_base, self.damage_rand,
337
- self.attack_power_cof, attribute.magical_attack_power,
338
  self.weapon_damage_cof, attribute.weapon_damage,
339
  self.surplus_cof, attribute.surplus
340
- ) * self.skill_stack
341
 
342
- damage = damage_addition_result(damage, attribute.magical_damage_addition + self.skill_damage_addition)
343
- damage = overcome_result(damage, attribute.magical_overcome,
344
- attribute.level_shield_base + attribute.magical_shield_base,
345
  attribute.magical_shield_gain + self.skill_shield_gain,
346
  attribute.magical_shield_ignore,
347
  attribute.shield_constant)
@@ -364,10 +375,6 @@ class MixingSkill(Skill):
364
  return damage, critical_damage, expected_damage, critical_strike
365
 
366
 
367
- class PetDamage(Damage):
368
- pass
369
-
370
-
371
  class PureDamage(PureSkill, Damage):
372
  pass
373
 
@@ -406,3 +413,15 @@ class MixingDotDamage(MixingSkill, DotDamage):
406
  @Damage.attack_power_cof.getter
407
  def attack_power_cof(self):
408
  return MAGICAL_DOT_ATTACK_POWER_COF(super().attack_power_cof, self.interval)
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  surplus_cof_gain: float = 1.
36
  weapon_damage_cof_gain: float = 1.
37
 
38
+ global_damage_factor: float = 1.
39
+
40
  skill_damage_addition: int = 0
41
  skill_pve_addition: int = 0
42
  _skill_shield_gain: Union[List[int], int] = 0
 
153
  self._weapon_damage_cof = weapon_damage_cof
154
  else:
155
  self._weapon_damage_cof = [weapon_damage_cof]
156
+
157
  @property
158
  def skill_shield_gain(self):
159
  if not isinstance(self._skill_shield_gain, list):
 
239
  return skill_tuple, status_tuple
240
 
241
 
242
+ class PetDamage(Damage):
243
+ def record(self, skill_level, critical, parser):
244
+ skill_tuple, status_tuple = super().record(skill_level, critical, parser)
245
+ pet_status_tuple = parser.available_status(self.skill_id, parser.current_caster)
246
+ parser.current_records[skill_tuple][pet_status_tuple].append(
247
+ parser.current_records[skill_tuple][status_tuple].pop()
248
+ )
249
+
250
+
251
  class DotDamage(Damage):
252
  def record(self, skill_level, critical, parser):
253
  skill_tuple, status_tuple = super().record(skill_level, critical, parser)
 
280
  self.attack_power_cof, attribute.physical_attack_power,
281
  self.weapon_damage_cof, attribute.weapon_damage,
282
  self.surplus_cof, attribute.surplus
283
+ ) * self.skill_stack * self.global_damage_factor * attribute.global_damage_factor
284
 
285
  damage = damage_addition_result(damage, attribute.physical_damage_addition + self.skill_damage_addition)
286
  damage = overcome_result(damage, attribute.physical_overcome,
 
314
  self.attack_power_cof, attribute.magical_attack_power,
315
  self.weapon_damage_cof, attribute.weapon_damage,
316
  self.surplus_cof, attribute.surplus
317
+ ) * self.skill_stack * self.global_damage_factor * attribute.global_damage_factor * attribute.global_damage_factor
318
 
319
  damage = damage_addition_result(damage, attribute.magical_damage_addition + self.skill_damage_addition)
320
  damage = overcome_result(damage, attribute.magical_overcome,
 
345
  def __call__(self, attribute: Attribute):
346
  damage = init_result(
347
  self.damage_base, self.damage_rand,
348
+ self.attack_power_cof, attribute.attack_power,
349
  self.weapon_damage_cof, attribute.weapon_damage,
350
  self.surplus_cof, attribute.surplus
351
+ ) * self.skill_stack * self.global_damage_factor * attribute.global_damage_factor
352
 
353
+ damage = damage_addition_result(damage, attribute.damage_addition + self.skill_damage_addition)
354
+ damage = overcome_result(damage, attribute.overcome,
355
+ attribute.level_shield_base + attribute.shield_base,
356
  attribute.magical_shield_gain + self.skill_shield_gain,
357
  attribute.magical_shield_ignore,
358
  attribute.shield_constant)
 
375
  return damage, critical_damage, expected_damage, critical_strike
376
 
377
 
 
 
 
 
378
  class PureDamage(PureSkill, Damage):
379
  pass
380
 
 
413
  @Damage.attack_power_cof.getter
414
  def attack_power_cof(self):
415
  return MAGICAL_DOT_ATTACK_POWER_COF(super().attack_power_cof, self.interval)
416
+
417
+
418
+ class PhysicalPetDamage(PhysicalSkill, PetDamage):
419
+ @Damage.attack_power_cof.getter
420
+ def attack_power_cof(self):
421
+ return PHYSICAL_ATTACK_POWER_COF(super().attack_power_cof + self.interval)
422
+
423
+
424
+ class MagicalPetDamage(MagicalSkill, PetDamage):
425
+ @Damage.attack_power_cof.getter
426
+ def attack_power_cof(self):
427
+ return MAGICAL_ATTACK_POWER_COF(super().attack_power_cof + self.interval)
general/buffs.py CHANGED
@@ -24,7 +24,7 @@ GENERAL_BUFFS = {
24
  }
25
 
26
  for buff_id, detail in GENERAL_BUFFS.items():
27
- GENERAL_BUFFS[buff_id] = Buff(buff_id, detail.pop("buff_name"))
28
  GENERAL_BUFFS[buff_id].activate = False
29
  for attr, value in detail.items():
30
  setattr(GENERAL_BUFFS[buff_id], attr, value)
 
24
  }
25
 
26
  for buff_id, detail in GENERAL_BUFFS.items():
27
+ GENERAL_BUFFS[buff_id] = Buff(buff_id)
28
  GENERAL_BUFFS[buff_id].activate = False
29
  for attr, value in detail.items():
30
  setattr(GENERAL_BUFFS[buff_id], attr, value)
general/gains/team.py CHANGED
@@ -31,7 +31,7 @@ class 袖气(TeamGain):
31
 
32
 
33
  class 左旋右转(TeamGain):
34
- gain_attributes = {"surplus": 54}
35
 
36
 
37
  class 泠风解怀(TeamGain):
 
31
 
32
 
33
  class 左旋右转(TeamGain):
34
+ gain_attributes = {"surplus_base": 54}
35
 
36
 
37
  class 泠风解怀(TeamGain):
get_assets.py CHANGED
@@ -26,12 +26,14 @@ ATTR_TYPE_MAP = {
26
  "atMagicAttackPowerBase": "magical_attack_power_base",
27
  "atSolarAttackPowerBase": "magical_attack_power_base",
28
  "atLunarAttackPowerBase": "magical_attack_power_base",
 
29
  "atSolarAndLunarAttackPowerBase": "magical_attack_power_base",
30
  "atPoisonAttackPowerBase": "magical_attack_power_base",
31
  "atPhysicsOvercomeBase": "physical_overcome_base",
32
  "atMagicOvercome": "magical_overcome_base",
33
  "atSolarOvercomeBase": "magical_overcome_base",
34
  "atLunarOvercomeBase": "magical_overcome_base",
 
35
  "atSolarAndLunarOvercomeBase": "magical_overcome_base",
36
  "atPoisonOvercomeBase": "magical_overcome_base",
37
  "atAllTypeCriticalStrike": "all_critical_strike_base",
@@ -39,6 +41,7 @@ ATTR_TYPE_MAP = {
39
  "atMagicCriticalStrike": "magical_critical_strike_base",
40
  "atSolarCriticalStrike": "magical_critical_strike_base",
41
  "atLunarCriticalStrike": "magical_critical_strike_base",
 
42
  "atSolarAndLunarCriticalStrike": "magical_critical_strike_base",
43
  "atPoisonCriticalStrike": "magical_critical_strike_base",
44
  "atAllTypeCriticalDamagePowerBase": "all_critical_power_base",
@@ -46,6 +49,7 @@ ATTR_TYPE_MAP = {
46
  "atMagicCriticalDamagePowerBase": "magical_critical_power_base",
47
  "atSolarCriticalDamagePowerBase": "magical_critical_power_base",
48
  "atLunarCriticalDamagePowerBase": "magical_critical_power_base",
 
49
  "atSolarAndLunarCriticalDamagePowerBase": "magical_critical_power_base",
50
  "atPoisonCriticalDamagePowerBase": "magical_critical_power_base",
51
  "atSurplusValueBase": "surplus_base",
 
26
  "atMagicAttackPowerBase": "magical_attack_power_base",
27
  "atSolarAttackPowerBase": "magical_attack_power_base",
28
  "atLunarAttackPowerBase": "magical_attack_power_base",
29
+ "atNeutralAttackPowerBase": "magical_attack_power_base",
30
  "atSolarAndLunarAttackPowerBase": "magical_attack_power_base",
31
  "atPoisonAttackPowerBase": "magical_attack_power_base",
32
  "atPhysicsOvercomeBase": "physical_overcome_base",
33
  "atMagicOvercome": "magical_overcome_base",
34
  "atSolarOvercomeBase": "magical_overcome_base",
35
  "atLunarOvercomeBase": "magical_overcome_base",
36
+ "atNeutralOvercomeBase": "magical_overcome_base",
37
  "atSolarAndLunarOvercomeBase": "magical_overcome_base",
38
  "atPoisonOvercomeBase": "magical_overcome_base",
39
  "atAllTypeCriticalStrike": "all_critical_strike_base",
 
41
  "atMagicCriticalStrike": "magical_critical_strike_base",
42
  "atSolarCriticalStrike": "magical_critical_strike_base",
43
  "atLunarCriticalStrike": "magical_critical_strike_base",
44
+ "atNeutralCriticalStrike": "magical_critical_strike_base",
45
  "atSolarAndLunarCriticalStrike": "magical_critical_strike_base",
46
  "atPoisonCriticalStrike": "magical_critical_strike_base",
47
  "atAllTypeCriticalDamagePowerBase": "all_critical_power_base",
 
49
  "atMagicCriticalDamagePowerBase": "magical_critical_power_base",
50
  "atSolarCriticalDamagePowerBase": "magical_critical_power_base",
51
  "atLunarCriticalDamagePowerBase": "magical_critical_power_base",
52
+ "atNeutralCriticalDamagePowerBase": "magical_critical_power_base",
53
  "atSolarAndLunarCriticalDamagePowerBase": "magical_critical_power_base",
54
  "atPoisonCriticalDamagePowerBase": "magical_critical_power_base",
55
  "atSurplusValueBase": "surplus_base",
parse_new_school.py CHANGED
@@ -59,4 +59,4 @@ class Parser:
59
 
60
  if __name__ == '__main__':
61
  parser = Parser()
62
- parser(r"temp.jcl")
 
59
 
60
  if __name__ == '__main__':
61
  parser = Parser()
62
+ parser(r"hua_jian.jcl")
qt/assets/equipments/belt CHANGED
The diff for this file is too large to render. See raw diff
 
qt/assets/equipments/hat CHANGED
The diff for this file is too large to render. See raw diff
 
qt/assets/equipments/jacket CHANGED
The diff for this file is too large to render. See raw diff
 
qt/assets/equipments/primary_weapon CHANGED
The diff for this file is too large to render. See raw diff
 
qt/assets/equipments/ring CHANGED
@@ -1 +1 @@
1
- {"客行江湖·纵巧戒 (破防 无双) 15600": {"id": 39921, "school": "通用", "kind": "身法", "level": 15600, "max_strength": 6, "base": {}, "magic": {"agility_base": 545, "physical_attack_power_base": 884, "physical_overcome_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·之远戒 (破防 无双) 15600": {"id": 39920, "school": "通用", "kind": "力道", "level": 15600, "max_strength": 6, "base": {}, "magic": {"strength_base": 545, "physical_attack_power_base": 884, "physical_overcome_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·磐气戒 (破防 无双) 15600": {"id": 39919, "school": "通用", "kind": "元气", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spunk_base": 545, "magical_attack_power_base": 1060, "magical_overcome_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·风翎戒 (破防 无双) 15600": {"id": 39918, "school": "通用", "kind": "根骨", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spirit_base": 545, "magical_attack_power_base": 1060, "magical_overcome_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "似窈戒 (破防 破招) 15600": {"id": 39869, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1903, "surplus_base": 3188, "physical_overcome_base": 2885}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "卓然戒 (会心 无双) 15600": {"id": 39868, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1631, "physical_critical_strike_base": 1974, "strain_base": 4858}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "乃书戒 (破防 破招) 15600": {"id": 39867, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 2284, "surplus_base": 3188, "magical_overcome_base": 2885}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "广萤戒 (会心 无双) 15600": {"id": 39866, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 1957, "all_critical_strike_base": 1974, "strain_base": 4858}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "赤树戒 (破防 无双) 15600": {"id": 39865, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1971, "physical_overcome_base": 3036, "strain_base": 3188}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "东倾戒 (破防 无双) 15600": {"id": 39864, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2365, "magical_overcome_base": 3036, "strain_base": 3188}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "望若戒 (会心 会效 破招) 15600": {"id": 39863, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1971, "surplus_base": 1670, "physical_critical_strike_base": 2885, "physical_critical_power_base": 1518}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "姑引戒 (破防 会心) 15600": {"id": 39862, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1971, "physical_critical_strike_base": 3112, "physical_overcome_base": 3112}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "勤俭戒 (无双) 15600": {"id": 39861, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 2311, "strain_base": 5390}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "庆本戒 (会心 会效 破招) 15600": {"id": 39860, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2365, "surplus_base": 1670, "all_critical_strike_base": 2885, "all_critical_power_base": 1518}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "耐歌戒 (破防 会心) 15600": {"id": 39859, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2365, "all_critical_strike_base": 3112, "magical_overcome_base": 3112}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "萌音戒 (无双) 15600": {"id": 39858, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2773, "strain_base": 5390}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "救困戒 (会心 无双) 15600": {"id": 39849, "school": "通用", "kind": "身法", "level": 15600, "max_strength": 6, "base": {}, "magic": {"agility_base": 545, "physical_attack_power_base": 884, "physical_critical_strike_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "磊落戒 (会心 无双) 15600": {"id": 39848, "school": "通用", "kind": "力道", "level": 15600, "max_strength": 6, "base": {}, "magic": {"strength_base": 545, "physical_attack_power_base": 884, "physical_critical_strike_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "良安戒 (会心 无双) 15600": {"id": 39847, "school": "通用", "kind": "元气", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spunk_base": 545, "magical_attack_power_base": 1060, "all_critical_strike_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "情义戒 (会心 无双) 15600": {"id": 39846, "school": "通用", "kind": "根骨", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spirit_base": 545, "magical_attack_power_base": 1060, "magical_critical_strike_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "照耀指环 (破防 破招) 15600": {"id": 39831, "school": "通用", "kind": "身法", "level": 15600, "max_strength": 6, "base": {}, "magic": {"agility_base": 545, "physical_attack_power_base": 884, "physical_overcome_base": 2733, "surplus_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "如雪指环 (破防 破招) 15600": {"id": 39830, "school": "通用", "kind": "力道", "level": 15600, "max_strength": 6, "base": {}, "magic": {"strength_base": 545, "physical_attack_power_base": 884, "physical_overcome_base": 2733, "surplus_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "宫阙指环 (破防 破招) 15600": {"id": 39829, "school": "通用", "kind": "元气", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spunk_base": 545, "magical_attack_power_base": 1060, "magical_overcome_base": 2733, "surplus_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "绕城指环 (破防 破招) 15600": {"id": 39828, "school": "通用", "kind": "根骨", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spirit_base": 545, "magical_attack_power_base": 1060, "magical_overcome_base": 2733, "surplus_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "行雾中·徙 (破防 破招) 13950": {"id": 40869, "school": "通用", "kind": "身法", "level": 13950, "max_strength": 6, "base": {}, "magic": {"agility_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "行雾中·兆 (破防 破招) 13950": {"id": 40868, "school": "通用", "kind": "力道", "level": 13950, "max_strength": 6, "base": {}, "magic": {"strength_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "行雾中·誓 (破防 破招) 13950": {"id": 40867, "school": "通用", "kind": "元气", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spunk_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "行雾中·赦 (破防 破招) 13950": {"id": 40866, "school": "通用", "kind": "根骨", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spirit_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "叠武戒 (破防 破招) 13950": {"id": 39795, "school": "通用", "kind": "身法", "level": 13950, "max_strength": 6, "base": {}, "magic": {"agility_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "绘山戒 (破防 破招) 13950": {"id": 39794, "school": "通用", "kind": "力道", "level": 13950, "max_strength": 6, "base": {}, "magic": {"strength_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "归朔戒 (破防 破招) 13950": {"id": 39793, "school": "通用", "kind": "元气", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spunk_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "青乡戒 (破防 破招) 13950": {"id": 39792, "school": "通用", "kind": "根骨", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spirit_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·霄月戒 (破防 无双) 13950": {"id": 38857, "school": "通用", "kind": "身法", "level": 13950, "max_strength": 6, "base": {}, "magic": {"agility_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·听钟戒 (破防 无双) 13950": {"id": 38856, "school": "通用", "kind": "力道", "level": 13950, "max_strength": 6, "base": {}, "magic": {"strength_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·断意戒 (破防 无双) 13950": {"id": 38855, "school": "通用", "kind": "元气", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spunk_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·意悠戒 (破防 无双) 13950": {"id": 38854, "school": "通用", "kind": "根骨", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spirit_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "时岑戒 (破防 破招) 13950": {"id": 38805, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1702, "surplus_base": 2851, "physical_overcome_base": 2580}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "游练戒 (会心 无双) 13950": {"id": 38804, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1459, "physical_critical_strike_base": 1765, "strain_base": 4344}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "璨云戒 (破防 破招) 13950": {"id": 38803, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 2042, "surplus_base": 2851, "magical_overcome_base": 2580}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "丰冉戒 (会心 无双) 13950": {"id": 38802, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 1750, "all_critical_strike_base": 1765, "strain_base": 4344}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "问年戒 (破防 无双) 13950": {"id": 38801, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1763, "physical_overcome_base": 2715, "strain_base": 2851}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "峻水戒 (破防 无双) 13950": {"id": 38800, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2115, "magical_overcome_base": 2715, "strain_base": 2851}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "光霆戒 (会心 会效 破招) 13950": {"id": 38799, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1763, "surplus_base": 1493, "physical_critical_strike_base": 2580, "physical_critical_power_base": 1358}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "兰珑戒 (破防 会心) 13950": {"id": 38798, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1763, "physical_critical_strike_base": 2783, "physical_overcome_base": 2783}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "时越戒 (无双) 13950": {"id": 38797, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 2066, "strain_base": 4820}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "希延戒 (会心 会效 破招) 13950": {"id": 38796, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2115, "surplus_base": 1493, "all_critical_strike_base": 2580, "all_critical_power_base": 1358}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "羽容戒 (破防 会心) 13950": {"id": 38795, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2115, "all_critical_strike_base": 2783, "magical_overcome_base": 2783}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "丹莲戒 (无双) 13950": {"id": 38794, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2480, "strain_base": 4820}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "踏雁戒 (会心 无双) 13950": {"id": 38785, "school": "通用", "kind": "身法", "level": 13950, "max_strength": 6, "base": {}, "magic": {"agility_base": 487, "physical_attack_power_base": 790, "physical_critical_strike_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "素鸦戒 (会心 无双) 13950": {"id": 38784, "school": "通用", "kind": "力道", "level": 13950, "max_strength": 6, "base": {}, "magic": {"strength_base": 487, "physical_attack_power_base": 790, "physical_critical_strike_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "壑云戒 (会心 无双) 13950": {"id": 38783, "school": "通用", "kind": "元气", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spunk_base": 487, "magical_attack_power_base": 948, "all_critical_strike_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "寒绡戒 (会心 无双) 13950": {"id": 38782, "school": "通用", "kind": "根骨", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spirit_base": 487, "magical_attack_power_base": 948, "magical_critical_strike_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "风掣指环 (破防 破招) 13950": {"id": 38767, "school": "通用", "kind": "身法", "level": 13950, "max_strength": 6, "base": {}, "magic": {"agility_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "凛行指环 (破防 破招) 13950": {"id": 38766, "school": "通用", "kind": "力道", "level": 13950, "max_strength": 6, "base": {}, "magic": {"strength_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "开颐指环 (破防 破招) 13950": {"id": 38765, "school": "通用", "kind": "元气", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spunk_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "扬英指环 (破防 破招) 13950": {"id": 38764, "school": "通用", "kind": "根骨", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spirit_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "暮雨玉 (会心 无双) 13400": {"id": 39801, "school": "通用", "kind": "身法", "level": 13400, "max_strength": 6, "base": {}, "magic": {"agility_base": 468, "physical_attack_power_base": 759, "physical_critical_strike_base": 2347, "strain_base": 2087}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "暮雨石 (会心 无双) 13400": {"id": 39800, "school": "通用", "kind": "力道", "level": 13400, "max_strength": 6, "base": {}, "magic": {"strength_base": 468, "physical_attack_power_base": 759, "physical_critical_strike_base": 2347, "strain_base": 2087}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "暮雨环 (会心 无双) 13400": {"id": 39799, "school": "通用", "kind": "元气", "level": 13400, "max_strength": 6, "base": {}, "magic": {"spunk_base": 468, "magical_attack_power_base": 911, "all_critical_strike_base": 2347, "strain_base": 2087}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "暮雨戒 (会心 无双) 13400": {"id": 39798, "school": "通用", "kind": "根骨", "level": 13400, "max_strength": 6, "base": {}, "magic": {"spirit_base": 468, "magical_attack_power_base": 911, "magical_critical_strike_base": 2347, "strain_base": 2087}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖月戒 (会心 破招) 12450": {"id": 37824, "school": "通用", "kind": "身法", "level": 12450, "max_strength": 6, "base": {}, "magic": {"agility_base": 435, "physical_attack_power_base": 705, "physical_critical_strike_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖静戒 (会心 破招) 12450": {"id": 37823, "school": "通用", "kind": "力道", "level": 12450, "max_strength": 6, "base": {}, "magic": {"strength_base": 435, "physical_attack_power_base": 705, "physical_critical_strike_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖烟戒 (会心 破招) 12450": {"id": 37822, "school": "通用", "kind": "元气", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spunk_base": 435, "magical_attack_power_base": 846, "all_critical_strike_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖寂戒 (会心 破招) 12450": {"id": 37821, "school": "通用", "kind": "根骨", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spirit_base": 435, "magical_attack_power_base": 846, "magical_critical_strike_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·天配戒 (破防 无双) 12450": {"id": 37782, "school": "通用", "kind": "身法", "level": 12450, "max_strength": 6, "base": {}, "magic": {"agility_base": 435, "physical_attack_power_base": 705, "physical_overcome_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·梦花戒 (破防 无双) 12450": {"id": 37781, "school": "通用", "kind": "力道", "level": 12450, "max_strength": 6, "base": {}, "magic": {"strength_base": 435, "physical_attack_power_base": 705, "physical_overcome_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·千世戒 (破防 无双) 12450": {"id": 37780, "school": "通用", "kind": "元气", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spunk_base": 435, "magical_attack_power_base": 846, "magical_overcome_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·渐浓戒 (破防 无双) 12450": {"id": 37779, "school": "通用", "kind": "根骨", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spirit_base": 435, "magical_attack_power_base": 846, "magical_overcome_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "催时戒 (破防 无双) 12450": {"id": 37730, "school": "精简", "kind": "外功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1519, "physical_overcome_base": 2302, "strain_base": 2545}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "解怜戒 (破防 无双) 12450": {"id": 37729, "school": "精简", "kind": "内功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 1823, "magical_overcome_base": 2302, "strain_base": 2545}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "破朝戒 (会心 无双) 12450": {"id": 37728, "school": "精简", "kind": "外功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1302, "physical_critical_strike_base": 1575, "strain_base": 3877}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "赫风戒 (破防 破招) 12450": {"id": 37727, "school": "精简", "kind": "外功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1519, "surplus_base": 2545, "physical_overcome_base": 2302}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "问岐戒 (无双) 12450": {"id": 37726, "school": "精简", "kind": "外功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1844, "strain_base": 4059}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "帘絮戒 (会心 无双) 12450": {"id": 37725, "school": "精简", "kind": "内功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 1562, "all_critical_strike_base": 1575, "strain_base": 3877}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "清斗戒 (破防 破招) 12450": {"id": 37724, "school": "精简", "kind": "内功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 1823, "surplus_base": 2545, "magical_overcome_base": 2302}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "昭月戒 (无双) 12450": {"id": 37723, "school": "精简", "kind": "内功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 2213, "strain_base": 4059}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "染辞戒 (会心 无双) 12450": {"id": 37714, "school": "通用", "kind": "身法", "level": 12450, "max_strength": 6, "base": {}, "magic": {"agility_base": 435, "physical_attack_power_base": 705, "physical_critical_strike_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "温刃戒 (会心 无双) 12450": {"id": 37713, "school": "通用", "kind": "力道", "level": 12450, "max_strength": 6, "base": {}, "magic": {"strength_base": 435, "physical_attack_power_base": 705, "physical_critical_strike_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "沁渡戒 (会心 无双) 12450": {"id": 37712, "school": "通用", "kind": "元气", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spunk_base": 435, "magical_attack_power_base": 846, "all_critical_strike_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "朝华戒 (会心 无双) 12450": {"id": 37711, "school": "通用", "kind": "根骨", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spirit_base": 435, "magical_attack_power_base": 846, "magical_critical_strike_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "商野指环 (破防 破招) 12450": {"id": 37696, "school": "通用", "kind": "身法", "level": 12450, "max_strength": 6, "base": {}, "magic": {"agility_base": 435, "physical_attack_power_base": 705, "physical_overcome_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "安衿指环 (破防 破招) 12450": {"id": 37695, "school": "通用", "kind": "力道", "level": 12450, "max_strength": 6, "base": {}, "magic": {"strength_base": 435, "physical_attack_power_base": 705, "physical_overcome_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "椴微指环 (破防 破招) 12450": {"id": 37694, "school": "通用", "kind": "元气", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spunk_base": 435, "magical_attack_power_base": 846, "magical_overcome_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "池泓指环 (破防 破招) 12450": {"id": 37693, "school": "通用", "kind": "根骨", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spirit_base": 435, "magical_attack_power_base": 846, "magical_overcome_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临仙戒 (会心 无双) 12400": {"id": 34202, "school": "通用", "kind": "身法", "level": 12400, "max_strength": 6, "base": {}, "magic": {"agility_base": 433, "physical_attack_power_base": 702, "physical_critical_strike_base": 2172, "strain_base": 1931}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临尚戒 (会心 无双) 12400": {"id": 34201, "school": "通用", "kind": "力道", "level": 12400, "max_strength": 6, "base": {}, "magic": {"strength_base": 433, "physical_attack_power_base": 702, "physical_critical_strike_base": 2172, "strain_base": 1931}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临曦戒 (会心 无双) 12400": {"id": 34200, "school": "通用", "kind": "元气", "level": 12400, "max_strength": 6, "base": {}, "magic": {"spunk_base": 433, "magical_attack_power_base": 843, "all_critical_strike_base": 2172, "strain_base": 1931}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临衣戒 (会心 无双) 12400": {"id": 34199, "school": "通用", "kind": "根骨", "level": 12400, "max_strength": 6, "base": {}, "magic": {"spirit_base": 433, "magical_attack_power_base": 843, "magical_critical_strike_base": 2172, "strain_base": 1931}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "梧风御厨戒指·刀功 (会心 无双) 12300": {"id": 39791, "school": "万灵", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "岚峰御厨戒指·刀功 (会心 无双) 12300": {"id": 39790, "school": "刀宗", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "迎新御厨戒指·火候 (会心 无双) 12300": {"id": 39788, "school": "药宗", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "沧波御厨戒指·刀功 (会心 无双) 12300": {"id": 39785, "school": "蓬莱", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "傲寒御厨戒指·刀功 (会心 无双) 12300": {"id": 39784, "school": "霸刀", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "蜀月御厨戒指·刀功 (会心 无双) 12300": {"id": 39775, "school": "唐门", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "蜀月御厨戒指·火候 (会心 无双) 12300": {"id": 39774, "school": "唐门", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "霓裳御厨戒指·火候 (会心 无双) 12300": {"id": 39770, "school": "七秀", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "灵虚御厨戒指·刀功 (会心 无双) 12300": {"id": 39769, "school": "纯阳", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "灵虚御厨戒指·火候 (会心 无双) 12300": {"id": 39768, "school": "纯阳", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "菩提御厨戒指·火候 (会心 无双) 12300": {"id": 39762, "school": "少林", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "久念戒 (破防 破招) 12300": {"id": 34274, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "拭江戒 (破防 破招) 12300": {"id": 34273, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "藏峦戒 (破防 破招) 12300": {"id": 34272, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "谨峰戒 (破防 破招) 12300": {"id": 34271, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "风岱戒 (会心 破招) 12300": {"id": 34256, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "项昌戒 (会心 破招) 12300": {"id": 34255, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "故芳戒 (会心 破招) 12300": {"id": 34254, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "all_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "剪桐戒 (会心 破招) 12300": {"id": 34253, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "北邱戒 (加速 破招) 12300": {"id": 34238, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "曲郦戒 (加速 破招) 12300": {"id": 34237, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "花霭戒 (加速 破招) 12300": {"id": 34236, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "途南戒 (加速 破招) 12300": {"id": 34235, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "渊忱戒 (破招 无双) 12300": {"id": 34220, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "surplus_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "羡双戒 (破招 无双) 12300": {"id": 34219, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "surplus_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "庭澜戒 (破招 无双) 12300": {"id": 34218, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "surplus_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "故云戒 (破招 无双) 12300": {"id": 34217, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "surplus_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆宁戒 (会心 破招) 12300": {"id": 34130, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆敬戒 (会心 破招) 12300": {"id": 34129, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆惜戒 (会心 破招) 12300": {"id": 34128, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "all_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆安戒 (会心 破招) 12300": {"id": 34127, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "盈绝戒 (加速 无双) 12300": {"id": 34112, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "垣翰戒 (加速 无双) 12300": {"id": 34111, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "语阔戒 (加速 无双) 12300": {"id": 34110, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "擒雨戒 (加速 无双) 12300": {"id": 34109, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "潋阳戒 (破防 破招) 12300": {"id": 34094, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "重关戒 (破防 破招) 12300": {"id": 34093, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "烟琐戒 (破防 破招) 12300": {"id": 34092, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "德襄戒 (破防 破招) 12300": {"id": 34091, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}}
 
1
+ {"客行江湖·纵巧戒 (破防 无双) 15600": {"id": 39921, "school": "通用", "kind": "身法", "level": 15600, "max_strength": 6, "base": {}, "magic": {"agility_base": 545, "physical_attack_power_base": 884, "physical_overcome_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·之远戒 (破防 无双) 15600": {"id": 39920, "school": "通用", "kind": "力道", "level": 15600, "max_strength": 6, "base": {}, "magic": {"strength_base": 545, "physical_attack_power_base": 884, "physical_overcome_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·磐气戒 (破防 无双) 15600": {"id": 39919, "school": "通用", "kind": "元气", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spunk_base": 545, "magical_attack_power_base": 1060, "magical_overcome_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·风翎戒 (破防 无双) 15600": {"id": 39918, "school": "通用", "kind": "根骨", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spirit_base": 545, "magical_attack_power_base": 1060, "magical_overcome_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "似窈戒 (破防 破招) 15600": {"id": 39869, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1903, "surplus_base": 3188, "physical_overcome_base": 2885}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "卓然戒 (会心 无双) 15600": {"id": 39868, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1631, "physical_critical_strike_base": 1974, "strain_base": 4858}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "乃书戒 (破防 破招) 15600": {"id": 39867, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 2284, "surplus_base": 3188, "magical_overcome_base": 2885}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "广萤戒 (会心 无双) 15600": {"id": 39866, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 1957, "all_critical_strike_base": 1974, "strain_base": 4858}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "赤树戒 (破防 无双) 15600": {"id": 39865, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1971, "physical_overcome_base": 3036, "strain_base": 3188}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "东倾戒 (破防 无双) 15600": {"id": 39864, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2365, "magical_overcome_base": 3036, "strain_base": 3188}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "望若戒 (会心 会效 破招) 15600": {"id": 39863, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1971, "surplus_base": 1670, "physical_critical_strike_base": 2885, "physical_critical_power_base": 1518}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "姑引戒 (破防 会心) 15600": {"id": 39862, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1971, "physical_critical_strike_base": 3112, "physical_overcome_base": 3112}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "勤俭戒 (无双) 15600": {"id": 39861, "school": "精简", "kind": "外功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 2311, "strain_base": 5390}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "庆本戒 (会心 会效 破招) 15600": {"id": 39860, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2365, "surplus_base": 1670, "all_critical_strike_base": 2885, "all_critical_power_base": 1518}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "耐歌戒 (破防 会心) 15600": {"id": 39859, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2365, "all_critical_strike_base": 3112, "magical_overcome_base": 3112}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "萌音戒 (无双) 15600": {"id": 39858, "school": "精简", "kind": "内功", "level": 15600, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2773, "strain_base": 5390}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "救困戒 (会心 无双) 15600": {"id": 39849, "school": "通用", "kind": "身法", "level": 15600, "max_strength": 6, "base": {}, "magic": {"agility_base": 545, "physical_attack_power_base": 884, "physical_critical_strike_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "磊落戒 (会心 无双) 15600": {"id": 39848, "school": "通用", "kind": "力道", "level": 15600, "max_strength": 6, "base": {}, "magic": {"strength_base": 545, "physical_attack_power_base": 884, "physical_critical_strike_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "良安戒 (会心 无双) 15600": {"id": 39847, "school": "通用", "kind": "元气", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spunk_base": 545, "magical_attack_power_base": 1060, "all_critical_strike_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "情义戒 (会心 无双) 15600": {"id": 39846, "school": "通用", "kind": "根骨", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spirit_base": 545, "magical_attack_power_base": 1060, "magical_critical_strike_base": 2733, "strain_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "照耀指环 (破防 破招) 15600": {"id": 39831, "school": "通用", "kind": "身法", "level": 15600, "max_strength": 6, "base": {}, "magic": {"agility_base": 545, "physical_attack_power_base": 884, "physical_overcome_base": 2733, "surplus_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "如雪指环 (破防 破招) 15600": {"id": 39830, "school": "通用", "kind": "力道", "level": 15600, "max_strength": 6, "base": {}, "magic": {"strength_base": 545, "physical_attack_power_base": 884, "physical_overcome_base": 2733, "surplus_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "宫阙指环 (破防 破招) 15600": {"id": 39829, "school": "通用", "kind": "元气", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spunk_base": 545, "magical_attack_power_base": 1060, "magical_overcome_base": 2733, "surplus_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "绕城指环 (破防 破招) 15600": {"id": 39828, "school": "通用", "kind": "根骨", "level": 15600, "max_strength": 6, "base": {}, "magic": {"spirit_base": 545, "magical_attack_power_base": 1060, "magical_overcome_base": 2733, "surplus_base": 2429}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "行雾中·徙 (破防 破招) 13950": {"id": 40869, "school": "通用", "kind": "身法", "level": 13950, "max_strength": 6, "base": {}, "magic": {"agility_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "行雾中·兆 (破防 破招) 13950": {"id": 40868, "school": "通用", "kind": "力道", "level": 13950, "max_strength": 6, "base": {}, "magic": {"strength_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "行雾中·誓 (破防 破招) 13950": {"id": 40867, "school": "通用", "kind": "元气", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spunk_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "行雾中·赦 (破防 破招) 13950": {"id": 40866, "school": "通用", "kind": "根骨", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spirit_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "叠武戒 (破防 破招) 13950": {"id": 39795, "school": "通用", "kind": "身法", "level": 13950, "max_strength": 6, "base": {}, "magic": {"agility_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "绘山戒 (破防 破招) 13950": {"id": 39794, "school": "通用", "kind": "力道", "level": 13950, "max_strength": 6, "base": {}, "magic": {"strength_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "归朔戒 (破防 破招) 13950": {"id": 39793, "school": "通用", "kind": "元气", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spunk_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "青乡戒 (破防 破招) 13950": {"id": 39792, "school": "通用", "kind": "根骨", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spirit_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·霄月戒 (破防 无双) 13950": {"id": 38857, "school": "通用", "kind": "身法", "level": 13950, "max_strength": 6, "base": {}, "magic": {"agility_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·听钟戒 (破防 无双) 13950": {"id": 38856, "school": "通用", "kind": "力道", "level": 13950, "max_strength": 6, "base": {}, "magic": {"strength_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·断意戒 (破防 无双) 13950": {"id": 38855, "school": "通用", "kind": "元气", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spunk_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·意悠戒 (破防 无双) 13950": {"id": 38854, "school": "通用", "kind": "根骨", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spirit_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "时岑戒 (破防 破招) 13950": {"id": 38805, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1702, "surplus_base": 2851, "physical_overcome_base": 2580}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "游练戒 (会心 无双) 13950": {"id": 38804, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1459, "physical_critical_strike_base": 1765, "strain_base": 4344}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "璨云戒 (破防 破招) 13950": {"id": 38803, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 2042, "surplus_base": 2851, "magical_overcome_base": 2580}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "丰冉戒 (会心 无双) 13950": {"id": 38802, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 1750, "all_critical_strike_base": 1765, "strain_base": 4344}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "问年戒 (破防 无双) 13950": {"id": 38801, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1763, "physical_overcome_base": 2715, "strain_base": 2851}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "峻水戒 (破防 无双) 13950": {"id": 38800, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2115, "magical_overcome_base": 2715, "strain_base": 2851}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "光霆戒 (会心 会效 破招) 13950": {"id": 38799, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1763, "surplus_base": 1493, "physical_critical_strike_base": 2580, "physical_critical_power_base": 1358}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "兰珑戒 (破防 会心) 13950": {"id": 38798, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1763, "physical_critical_strike_base": 2783, "physical_overcome_base": 2783}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "时越戒 (无双) 13950": {"id": 38797, "school": "精简", "kind": "外功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 2066, "strain_base": 4820}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "希延戒 (会心 会效 破招) 13950": {"id": 38796, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2115, "surplus_base": 1493, "all_critical_strike_base": 2580, "all_critical_power_base": 1358}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "羽容戒 (破防 会心) 13950": {"id": 38795, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2115, "all_critical_strike_base": 2783, "magical_overcome_base": 2783}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "丹莲戒 (无双) 13950": {"id": 38794, "school": "精简", "kind": "内功", "level": 13950, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2480, "strain_base": 4820}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "踏雁戒 (会心 无双) 13950": {"id": 38785, "school": "通用", "kind": "身法", "level": 13950, "max_strength": 6, "base": {}, "magic": {"agility_base": 487, "physical_attack_power_base": 790, "physical_critical_strike_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "素鸦戒 (会心 无双) 13950": {"id": 38784, "school": "通用", "kind": "力道", "level": 13950, "max_strength": 6, "base": {}, "magic": {"strength_base": 487, "physical_attack_power_base": 790, "physical_critical_strike_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "壑云戒 (会心 无双) 13950": {"id": 38783, "school": "通用", "kind": "元气", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spunk_base": 487, "magical_attack_power_base": 948, "all_critical_strike_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "寒绡戒 (会心 无双) 13950": {"id": 38782, "school": "通用", "kind": "根骨", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spirit_base": 487, "magical_attack_power_base": 948, "magical_critical_strike_base": 2444, "strain_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "风掣指环 (破防 破招) 13950": {"id": 38767, "school": "通用", "kind": "身法", "level": 13950, "max_strength": 6, "base": {}, "magic": {"agility_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "凛行指环 (破防 破招) 13950": {"id": 38766, "school": "通用", "kind": "力道", "level": 13950, "max_strength": 6, "base": {}, "magic": {"strength_base": 487, "physical_attack_power_base": 790, "physical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "开颐指环 (破防 破招) 13950": {"id": 38765, "school": "通用", "kind": "元气", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spunk_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "扬英指环 (破防 破招) 13950": {"id": 38764, "school": "通用", "kind": "根骨", "level": 13950, "max_strength": 6, "base": {}, "magic": {"spirit_base": 487, "magical_attack_power_base": 948, "magical_overcome_base": 2444, "surplus_base": 2172}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "暮雨玉 (会心 无双) 13400": {"id": 39801, "school": "通用", "kind": "身法", "level": 13400, "max_strength": 6, "base": {}, "magic": {"agility_base": 468, "physical_attack_power_base": 759, "physical_critical_strike_base": 2347, "strain_base": 2087}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "暮雨石 (会心 无双) 13400": {"id": 39800, "school": "通用", "kind": "力道", "level": 13400, "max_strength": 6, "base": {}, "magic": {"strength_base": 468, "physical_attack_power_base": 759, "physical_critical_strike_base": 2347, "strain_base": 2087}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "暮雨环 (会心 无双) 13400": {"id": 39799, "school": "通用", "kind": "元气", "level": 13400, "max_strength": 6, "base": {}, "magic": {"spunk_base": 468, "magical_attack_power_base": 911, "all_critical_strike_base": 2347, "strain_base": 2087}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "暮雨戒 (会心 无双) 13400": {"id": 39798, "school": "通用", "kind": "根骨", "level": 13400, "max_strength": 6, "base": {}, "magic": {"spirit_base": 468, "magical_attack_power_base": 911, "magical_critical_strike_base": 2347, "strain_base": 2087}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖月戒 (会心 破招) 12450": {"id": 37824, "school": "通用", "kind": "身法", "level": 12450, "max_strength": 6, "base": {}, "magic": {"agility_base": 435, "physical_attack_power_base": 705, "physical_critical_strike_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖静戒 (会心 破招) 12450": {"id": 37823, "school": "通用", "kind": "力道", "level": 12450, "max_strength": 6, "base": {}, "magic": {"strength_base": 435, "physical_attack_power_base": 705, "physical_critical_strike_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖烟戒 (会心 ��招) 12450": {"id": 37822, "school": "通用", "kind": "元气", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spunk_base": 435, "magical_attack_power_base": 846, "all_critical_strike_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖寂戒 (会心 破招) 12450": {"id": 37821, "school": "通用", "kind": "根骨", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spirit_base": 435, "magical_attack_power_base": 846, "magical_critical_strike_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·天配戒 (破防 无双) 12450": {"id": 37782, "school": "通用", "kind": "身法", "level": 12450, "max_strength": 6, "base": {}, "magic": {"agility_base": 435, "physical_attack_power_base": 705, "physical_overcome_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·梦花戒 (破防 无双) 12450": {"id": 37781, "school": "通用", "kind": "力道", "level": 12450, "max_strength": 6, "base": {}, "magic": {"strength_base": 435, "physical_attack_power_base": 705, "physical_overcome_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·千世戒 (破防 无双) 12450": {"id": 37780, "school": "通用", "kind": "元气", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spunk_base": 435, "magical_attack_power_base": 846, "magical_overcome_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客行江湖·渐浓戒 (破防 无双) 12450": {"id": 37779, "school": "通用", "kind": "根骨", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spirit_base": 435, "magical_attack_power_base": 846, "magical_overcome_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "催时戒 (破防 无双) 12450": {"id": 37730, "school": "精简", "kind": "外功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1519, "physical_overcome_base": 2302, "strain_base": 2545}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "解怜戒 (破防 无双) 12450": {"id": 37729, "school": "精简", "kind": "内功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 1823, "magical_overcome_base": 2302, "strain_base": 2545}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "破朝戒 (会心 无双) 12450": {"id": 37728, "school": "精简", "kind": "外功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1302, "physical_critical_strike_base": 1575, "strain_base": 3877}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "赫风戒 (破防 破招) 12450": {"id": 37727, "school": "精简", "kind": "外功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1519, "surplus_base": 2545, "physical_overcome_base": 2302}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "问岐戒 (无双) 12450": {"id": 37726, "school": "精简", "kind": "外功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"physical_attack_power_base": 1844, "strain_base": 4059}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "帘絮戒 (会心 无双) 12450": {"id": 37725, "school": "精简", "kind": "内功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 1562, "all_critical_strike_base": 1575, "strain_base": 3877}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "清斗戒 (破防 破招) 12450": {"id": 37724, "school": "精简", "kind": "内功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 1823, "surplus_base": 2545, "magical_overcome_base": 2302}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "昭月戒 (无双) 12450": {"id": 37723, "school": "精简", "kind": "内功", "level": 12450, "max_strength": 4, "base": {}, "magic": {"magical_attack_power_base": 2213, "strain_base": 4059}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "染辞戒 (会心 无双) 12450": {"id": 37714, "school": "通用", "kind": "身法", "level": 12450, "max_strength": 6, "base": {}, "magic": {"agility_base": 435, "physical_attack_power_base": 705, "physical_critical_strike_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "温刃戒 (会心 无双) 12450": {"id": 37713, "school": "通用", "kind": "力道", "level": 12450, "max_strength": 6, "base": {}, "magic": {"strength_base": 435, "physical_attack_power_base": 705, "physical_critical_strike_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "沁渡戒 (会心 无双) 12450": {"id": 37712, "school": "通用", "kind": "元气", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spunk_base": 435, "magical_attack_power_base": 846, "all_critical_strike_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "朝华戒 (会心 无双) 12450": {"id": 37711, "school": "通用", "kind": "根骨", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spirit_base": 435, "magical_attack_power_base": 846, "magical_critical_strike_base": 2181, "strain_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "商野指环 (破防 破招) 12450": {"id": 37696, "school": "通用", "kind": "身法", "level": 12450, "max_strength": 6, "base": {}, "magic": {"agility_base": 435, "physical_attack_power_base": 705, "physical_overcome_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "安衿指环 (破防 破招) 12450": {"id": 37695, "school": "通用", "kind": "力道", "level": 12450, "max_strength": 6, "base": {}, "magic": {"strength_base": 435, "physical_attack_power_base": 705, "physical_overcome_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "椴微指环 (破防 破招) 12450": {"id": 37694, "school": "通用", "kind": "元气", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spunk_base": 435, "magical_attack_power_base": 846, "magical_overcome_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "池泓指环 (破防 破招) 12450": {"id": 37693, "school": "通用", "kind": "根骨", "level": 12450, "max_strength": 6, "base": {}, "magic": {"spirit_base": 435, "magical_attack_power_base": 846, "magical_overcome_base": 2181, "surplus_base": 1939}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临仙戒 (会心 无双) 12400": {"id": 34202, "school": "通用", "kind": "身法", "level": 12400, "max_strength": 6, "base": {}, "magic": {"agility_base": 433, "physical_attack_power_base": 702, "physical_critical_strike_base": 2172, "strain_base": 1931}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临尚戒 (会心 无双) 12400": {"id": 34201, "school": "通用", "kind": "力道", "level": 12400, "max_strength": 6, "base": {}, "magic": {"strength_base": 433, "physical_attack_power_base": 702, "physical_critical_strike_base": 2172, "strain_base": 1931}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临曦戒 (会心 无双) 12400": {"id": 34200, "school": "通用", "kind": "元气", "level": 12400, "max_strength": 6, "base": {}, "magic": {"spunk_base": 433, "magical_attack_power_base": 843, "all_critical_strike_base": 2172, "strain_base": 1931}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临衣戒 (会心 无双) 12400": {"id": 34199, "school": "通用", "kind": "根骨", "level": 12400, "max_strength": 6, "base": {}, "magic": {"spirit_base": 433, "magical_attack_power_base": 843, "magical_critical_strike_base": 2172, "strain_base": 1931}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "梧风御厨戒指·刀功 (会心 无双) 12300": {"id": 39791, "school": "万灵", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "岚峰御厨戒指·刀功 (会心 无双) 12300": {"id": 39790, "school": "刀宗", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "迎新御厨戒指·火候 (会心 无双) 12300": {"id": 39788, "school": "药宗", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "沧波御厨戒指·刀功 (会心 无双) 12300": {"id": 39785, "school": "蓬莱", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "傲寒御厨戒指·刀功 (会心 无双) 12300": {"id": 39784, "school": "霸刀", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "古意御厨戒指·火候 (会心 无双) 12300": {"id": 39782, "school": "长歌", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "蜀月御厨戒指·刀功 (会心 无双) 12300": {"id": 39775, "school": "唐门", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "蜀月御厨戒指·火候 (会心 无双) 12300": {"id": 39774, "school": "唐门", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "霓裳御厨戒指·火候 (会心 无双) 12300": {"id": 39770, "school": "七秀", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "灵虚御厨戒指·刀功 (会心 无双) 12300": {"id": 39769, "school": "纯阳", "kind": "外功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "灵虚御厨戒指·火候 (会心 无双) 12300": {"id": 39768, "school": "纯阳", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "翡翠御厨戒指·火候 (会心 无双) 12300": {"id": 39764, "school": "万花", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "菩提御厨戒指·火候 (会心 无双) 12300": {"id": 39762, "school": "少林", "kind": "内功", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": "125741", "set_attr": {"2": {"all_major_base": 305}}, "set_gain": {}}, "久念戒 (破防 破招) 12300": {"id": 34274, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "拭江戒 (破防 破招) 12300": {"id": 34273, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "藏峦戒 (破防 破招) 12300": {"id": 34272, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "谨峰戒 (破防 破招) 12300": {"id": 34271, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "风岱戒 (会心 破招) 12300": {"id": 34256, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "项昌戒 (会心 破招) 12300": {"id": 34255, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "故芳戒 (会心 破招) 12300": {"id": 34254, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "all_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "剪桐戒 (会心 破招) 12300": {"id": 34253, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "北邱戒 (加速 破招) 12300": {"id": 34238, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "曲郦戒 (加速 破招) 12300": {"id": 34237, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "花霭戒 (加速 破招) 12300": {"id": 34236, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "途南戒 (加速 破招) 12300": {"id": 34235, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "渊忱戒 (破招 无双) 12300": {"id": 34220, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "surplus_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "羡双戒 (破招 无双) 12300": {"id": 34219, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "surplus_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "庭澜戒 (破招 无双) 12300": {"id": 34218, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "surplus_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "故云戒 (破招 无双) 12300": {"id": 34217, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "surplus_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆宁戒 (会心 破招) 12300": {"id": 34130, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆敬戒 (会心 破招) 12300": {"id": 34129, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆惜戒 (会心 破招) 12300": {"id": 34128, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "all_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆安戒 (会心 破招) 12300": {"id": 34127, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_critical_strike_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "盈绝戒 (加速 无双) 12300": {"id": 34112, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "垣翰戒 (加速 无双) 12300": {"id": 34111, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "语阔戒 (加速 无双) 12300": {"id": 34110, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "擒雨戒 (加速 无双) 12300": {"id": 34109, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "strain_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "潋阳戒 (破防 破招) 12300": {"id": 34094, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "重关戒 (破防 破招) 12300": {"id": 34093, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "烟琐戒 (破防 破招) 12300": {"id": 34092, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "德襄戒 (破防 破招) 12300": {"id": 34091, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "surplus_base": 1915}, "embed": {}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}}
qt/assets/equipments/shoes CHANGED
The diff for this file is too large to render. See raw diff
 
qt/assets/equipments/wrist CHANGED
The diff for this file is too large to render. See raw diff
 
qt/components/bonuses.py CHANGED
@@ -181,11 +181,9 @@ class TeamGainsWidget(QWidget):
181
  tab_layout.addWidget(self.team_gains["庄周梦"]["stack"], 0, 0)
182
  tab_layout.addWidget(self.team_gains["庄周梦"]["rate"], 0, 1)
183
  self.team_gains["弄梅"] = {
184
- "stack": SpinWithLabel("弄梅", "层数", maximum=TEAM_GAIN_LIMIT["庄周梦"]["stack"]),
185
  "rate": SpinWithLabel("弄梅", "覆盖(%)", maximum=100)
186
  }
187
- tab_layout.addWidget(self.team_gains["弄梅"]["stack"], 1, 0)
188
- tab_layout.addWidget(self.team_gains["弄梅"]["rate"], 1, 1)
189
 
190
  tab = QWidget()
191
  tab_layout = QGridLayout(tab)
 
181
  tab_layout.addWidget(self.team_gains["庄周梦"]["stack"], 0, 0)
182
  tab_layout.addWidget(self.team_gains["庄周梦"]["rate"], 0, 1)
183
  self.team_gains["弄梅"] = {
 
184
  "rate": SpinWithLabel("弄梅", "覆盖(%)", maximum=100)
185
  }
186
+ tab_layout.addWidget(self.team_gains["弄梅"]["rate"], 1, 0)
 
187
 
188
  tab = QWidget()
189
  tab_layout = QGridLayout(tab)
schools/__init__.py CHANGED
@@ -8,8 +8,8 @@ from base.skill import Skill
8
 
9
  from schools import bei_ao_jue, gu_feng_jue
10
  from schools import shan_hai_xin_jue, ling_hai_jue, tai_xu_jian_yi
11
- from schools import yi_jin_jing, tian_luo_gui_dao
12
- from schools import wu_fang, bing_xin_jue
13
 
14
 
15
  @dataclass
@@ -108,6 +108,14 @@ SUPPORT_SCHOOL = {
108
  recipe_gains=tai_xu_jian_yi.RECIPE_GAINS, recipes=tai_xu_jian_yi.RECIPES,
109
  gains=tai_xu_jian_yi.GAINS, display_attrs={"agility": "身法", **PHYSICAL_DISPLAY_ATTRS}
110
  ),
 
 
 
 
 
 
 
 
111
  10081: School(
112
  school="七秀", major="根骨", kind="内功", attribute=bing_xin_jue.BingXinJue, formation="九音惊弦阵",
113
  skills=bing_xin_jue.SKILLS, buffs=bing_xin_jue.BUFFS, prepare=bing_xin_jue.prepare,
@@ -124,6 +132,14 @@ SUPPORT_SCHOOL = {
124
  recipe_gains=tian_luo_gui_dao.RECIPE_GAINS, recipes=tian_luo_gui_dao.RECIPES,
125
  gains=tian_luo_gui_dao.GAINS, display_attrs={"spunk": "元气", **MIXING_DISPLAY_ATTRS}
126
  ),
 
 
 
 
 
 
 
 
127
  10464: School(
128
  school="霸刀", major="力道", kind="外功", attribute=bei_ao_jue.BeiAoJue, formation="霜岚洗锋阵",
129
  skills=bei_ao_jue.SKILLS, buffs=bei_ao_jue.BUFFS, prepare=bei_ao_jue.prepare,
 
8
 
9
  from schools import bei_ao_jue, gu_feng_jue
10
  from schools import shan_hai_xin_jue, ling_hai_jue, tai_xu_jian_yi
11
+ from schools import yi_jin_jing, tian_luo_gui_dao, hua_jian_you
12
+ from schools import wu_fang, bing_xin_jue, mo_wen
13
 
14
 
15
  @dataclass
 
108
  recipe_gains=tai_xu_jian_yi.RECIPE_GAINS, recipes=tai_xu_jian_yi.RECIPES,
109
  gains=tai_xu_jian_yi.GAINS, display_attrs={"agility": "身法", **PHYSICAL_DISPLAY_ATTRS}
110
  ),
111
+ 10021: School(
112
+ school="万花", major="元气", kind="内功", attribute=hua_jian_you.HuaJianYou, formation="七绝逍遥阵",
113
+ skills=hua_jian_you.SKILLS, buffs=hua_jian_you.BUFFS, prepare=hua_jian_you.prepare,
114
+ talent_gains=hua_jian_you.TALENT_GAINS, talents=hua_jian_you.TALENTS,
115
+ talent_decoder=hua_jian_you.TALENT_DECODER, talent_encoder=hua_jian_you.TALENT_ENCODER,
116
+ recipe_gains=hua_jian_you.RECIPE_GAINS, recipes=hua_jian_you.RECIPES,
117
+ gains=hua_jian_you.GAINS, display_attrs={"spunk": "元气", **MAGICAL_DISPLAY_ATTRS}
118
+ ),
119
  10081: School(
120
  school="七秀", major="根骨", kind="内功", attribute=bing_xin_jue.BingXinJue, formation="九音惊弦阵",
121
  skills=bing_xin_jue.SKILLS, buffs=bing_xin_jue.BUFFS, prepare=bing_xin_jue.prepare,
 
132
  recipe_gains=tian_luo_gui_dao.RECIPE_GAINS, recipes=tian_luo_gui_dao.RECIPES,
133
  gains=tian_luo_gui_dao.GAINS, display_attrs={"spunk": "元气", **MIXING_DISPLAY_ATTRS}
134
  ),
135
+ 10447: School(
136
+ school="长歌", major="根骨", kind="内功", attribute=mo_wen.MoWen, formation="万籁金弦阵",
137
+ skills=mo_wen.SKILLS, buffs=mo_wen.BUFFS, prepare=mo_wen.prepare,
138
+ talent_gains=mo_wen.TALENT_GAINS, talents=mo_wen.TALENTS,
139
+ talent_decoder=mo_wen.TALENT_DECODER, talent_encoder=mo_wen.TALENT_ENCODER,
140
+ recipe_gains=mo_wen.RECIPE_GAINS, recipes=mo_wen.RECIPES,
141
+ gains=mo_wen.GAINS, display_attrs={"spirit": "根骨", **MAGICAL_DISPLAY_ATTRS}
142
+ ),
143
  10464: School(
144
  school="霸刀", major="力道", kind="外功", attribute=bei_ao_jue.BeiAoJue, formation="霜岚洗锋阵",
145
  skills=bei_ao_jue.SKILLS, buffs=bei_ao_jue.BUFFS, prepare=bei_ao_jue.prepare,
schools/bei_ao_jue/buffs.py CHANGED
@@ -36,7 +36,7 @@ BUFFS = {
36
  }
37
 
38
  for buff_id, detail in BUFFS.items():
39
- BUFFS[buff_id] = Buff(buff_id, detail.pop("buff_name"))
40
  for attr, value in detail.items():
41
  setattr(BUFFS[buff_id], attr, value)
42
 
 
36
  }
37
 
38
  for buff_id, detail in BUFFS.items():
39
+ BUFFS[buff_id] = Buff(buff_id)
40
  for attr, value in detail.items():
41
  setattr(BUFFS[buff_id], attr, value)
42
 
schools/bing_xin_jue/buffs.py CHANGED
@@ -64,7 +64,7 @@ BUFFS = {
64
  }
65
 
66
  for buff_id, detail in BUFFS.items():
67
- BUFFS[buff_id] = Buff(buff_id, detail.pop("buff_name"))
68
  for attr, value in detail.items():
69
  setattr(BUFFS[buff_id], attr, value)
70
 
 
64
  }
65
 
66
  for buff_id, detail in BUFFS.items():
67
+ BUFFS[buff_id] = Buff(buff_id)
68
  for attr, value in detail.items():
69
  setattr(BUFFS[buff_id], attr, value)
70
 
schools/gu_feng_jue/buffs.py CHANGED
@@ -2,6 +2,11 @@ from base.buff import Buff
2
  from general.buffs import GENERAL_BUFFS
3
 
4
 
 
 
 
 
 
5
  BUFFS = {
6
  11378: {
7
  "buff_name": "朔气",
@@ -54,7 +59,7 @@ BUFFS = {
54
  }
55
 
56
  for buff_id, detail in BUFFS.items():
57
- BUFFS[buff_id] = Buff(buff_id, detail.pop("buff_name"))
58
  for attr, value in detail.items():
59
  setattr(BUFFS[buff_id], attr, value)
60
 
 
2
  from general.buffs import GENERAL_BUFFS
3
 
4
 
5
+ class 涤瑕(Buff):
6
+ def value(self, values):
7
+ return 1 + values * self.buff_stack
8
+
9
+
10
  BUFFS = {
11
  11378: {
12
  "buff_name": "朔气",
 
59
  }
60
 
61
  for buff_id, detail in BUFFS.items():
62
+ BUFFS[buff_id] = Buff(buff_id)
63
  for attr, value in detail.items():
64
  setattr(BUFFS[buff_id], attr, value)
65
 
schools/hua_jian_you/__init__.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from schools.hua_jian_you.skills import SKILLS
2
+ from schools.hua_jian_you.buffs import BUFFS
3
+ from schools.hua_jian_you.talents import TALENT_GAINS, TALENTS, TALENT_DECODER, TALENT_ENCODER
4
+ from schools.hua_jian_you.recipes import RECIPE_GAINS, RECIPES
5
+ from schools.hua_jian_you.gains import GAINS
6
+ from schools.hua_jian_you.attribute import HuaJianYou
7
+
8
+
9
+ def prepare(self, player_id):
10
+ pass
schools/hua_jian_you/attribute.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from base.attribute import MagicalAttribute
2
+ from base.constant import *
3
+
4
+
5
+ class HuaJianYou(MagicalAttribute):
6
+ SPUNK_TO_ATTACK_POWER = 1997 / BINARY_SCALE
7
+ SPUNK_TO_OVERCOME = 195 / BINARY_SCALE
8
+
9
+ def __init__(self):
10
+ super().__init__()
11
+ self.magical_attack_power_base += 4139
12
+ self.pve_addition += 102
13
+
14
+ @property
15
+ def extra_magical_attack_power(self):
16
+ return int(self.spunk * self.SPUNK_TO_ATTACK_POWER)
17
+
18
+ @property
19
+ def extra_magical_overcome(self):
20
+ return int(self.spunk * self.SPUNK_TO_OVERCOME)
schools/hua_jian_you/buffs.py ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from base.buff import Buff
2
+ from general.buffs import GENERAL_BUFFS
3
+
4
+ BUFFS = {
5
+ 1440: {
6
+ "buff_name": "怒叱",
7
+ "activate": False,
8
+ "gain_attributes": {
9
+ "magical_critical_strike_gain": 400,
10
+ "magical_critical_power_gain": 41
11
+ }
12
+ },
13
+ 1487: {
14
+ "buff_name": "布散",
15
+ "gain_attributes": {
16
+ "magical_attack_power_gain": 307,
17
+ }
18
+ },
19
+ 14636: {
20
+ "buff_name": "乱洒",
21
+ "gain_skills": {
22
+ 182: {
23
+ "skill_damage_addition": 307,
24
+ }
25
+ }
26
+ },
27
+ 11809: {
28
+ "buff_name": "倚天",
29
+ "gain_attributes": {
30
+ "all_shield_ignore": 102
31
+ }
32
+ },
33
+ 12588: {
34
+ "buff_name": "清流",
35
+ "gain_attributes": {
36
+ "all_damage_addition": 102
37
+ }
38
+ },
39
+ 24599: {
40
+ "buff_name": "雪中行",
41
+ "stackable": False,
42
+ "gain_attributes": {
43
+ "magical_attack_power_gain": [102, 204, 306],
44
+ "magical_critical_strike_gain": [600, 1200, 1800]
45
+ },
46
+ "gain_skills": {
47
+ skill_id: {
48
+ "skill_damage_addition": [174, 348, 420]
49
+ } for skill_id in (33222,)
50
+ }
51
+ },
52
+ 28116: {
53
+ "buff_name": "钟灵",
54
+ "gain_attributes": {
55
+ "magical_attack_power_gain": 102,
56
+ "surplus_gain": 102
57
+ }
58
+ },
59
+ -32489: {
60
+ "buff_name": "青冠",
61
+ "activate": False,
62
+ "gain_attributes": {
63
+ "global_damage_factor": [0.25, 1.]
64
+ }
65
+ },
66
+ 9722: {
67
+ "buff_name": "涓流",
68
+ "gain_attributes": {
69
+ "magical_critical_strike_gain": 160,
70
+ "magical_critical_power_gain": 16
71
+ }
72
+ },
73
+ }
74
+
75
+ for buff_id, detail in BUFFS.items():
76
+ BUFFS[buff_id] = Buff(buff_id)
77
+ for attr, value in detail.items():
78
+ setattr(BUFFS[buff_id], attr, value)
79
+
80
+ for buff_id, buff in GENERAL_BUFFS.items():
81
+ BUFFS[buff_id] = buff
schools/hua_jian_you/gains.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from base.recipe import attack_power_recipe, damage_addition_recipe, critical_strike_recipe
2
+ from general.gains.equipment import EQUIPMENT_GAINS, CriticalSet
3
+ from base.gain import Gain
4
+
5
+ GAINS = {
6
+ 1912: CriticalSet(1440),
7
+ 817: attack_power_recipe([714], 1.15),
8
+ 1546: damage_addition_recipe([33222], 102),
9
+ 1516: damage_addition_recipe([14941], 51),
10
+ 1517: damage_addition_recipe([33222], 51),
11
+ 1131: critical_strike_recipe([14941], 500),
12
+ 1979: critical_strike_recipe([33222], 500),
13
+ 2417: Gain(),
14
+ 1929: Gain(),
15
+ 17399: Gain(),
16
+ 17400: Gain(),
17
+ **EQUIPMENT_GAINS,
18
+ }
schools/hua_jian_you/recipes.py ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ "4%伤害": damage_addition_recipe([14941], 41),
9
+ "3%伤害": damage_addition_recipe([14941], 31),
10
+ "3%会心": critical_strike_recipe([14941], 300),
11
+ "2%会心": critical_strike_recipe([14941], 200),
12
+ },
13
+ "芙蓉并蒂": {
14
+ "5%伤害": damage_addition_recipe([186], 51),
15
+ "4%伤害": damage_addition_recipe([186], 41),
16
+ "3%伤害": damage_addition_recipe([186], 31),
17
+ "4%会心": critical_strike_recipe([186], 400),
18
+ "3%会心": critical_strike_recipe([186], 300),
19
+ "2%会心": critical_strike_recipe([186], 200),
20
+ },
21
+ "快雪时晴": {
22
+ "5%伤害": damage_addition_recipe([33222], 51),
23
+ "4%伤害": damage_addition_recipe([33222], 41),
24
+ "3%伤害": damage_addition_recipe([33222], 31)
25
+ },
26
+ }
27
+
28
+ RECIPES: Dict[str, List[str]] = {
29
+ "普渡四方": ["5%伤害", "4%伤害", "3%伤害"],
30
+ "横扫六合": ["50%伤害"],
31
+ "韦陀献杵": ["5%伤害", "4%伤害", "4%会心", "3%伤害", "3%会心", "2%会心"],
32
+ "捕风式": ["15%伤害", "10%伤害", "10%伤害"],
33
+ "守缺式": ["5%伤害", "4%伤害", "4%会心", "3%伤害", "3%会心", "2%会心"],
34
+ "拿云式": ["5%伤害", "4%伤害", "3%伤害"],
35
+ }
schools/hua_jian_you/skills.py ADDED
@@ -0,0 +1,243 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Dict
2
+
3
+ from base.skill import Skill, DotSkill, PhysicalDamage, MagicalDamage, MagicalDotDamage
4
+ from general.skills import GENERAL_SKILLS
5
+
6
+
7
+ class DotConsumeSkill(Skill):
8
+ buff_levels: dict
9
+
10
+ def record(self, skill_level, critical, parser):
11
+ if not (last_dot := parser.current_last_dot.pop(self.bind_skill, None)):
12
+ return
13
+ if skill_level not in self.buff_levels:
14
+ return
15
+
16
+ skill_tuple, status_tuple = last_dot
17
+ if buff_level := self.buff_levels[skill_level]:
18
+ new_status_tuple = (*status_tuple, (-32489, buff_level, 1))
19
+ else:
20
+ new_status_tuple = status_tuple
21
+ skill_id, skill_level, skill_stack = skill_tuple
22
+ parser.current_ticks[skill_id] += 1
23
+ tick = min(parser.current_ticks[skill_id], self.tick)
24
+ parser.current_records[(skill_id, skill_level, skill_stack * tick)][new_status_tuple].append(
25
+ parser.current_records[skill_tuple][status_tuple].pop()
26
+ )
27
+ parser.current_ticks[skill_id] -= tick
28
+
29
+
30
+ class GeneraConsumeSkill(DotConsumeSkill):
31
+ bind_skills = {
32
+ **{i + 9: skill_id for i, skill_id in enumerate([714, 666, 711, 24158])}
33
+ }
34
+ buff_levels = {
35
+ **{i + 9: 1 for i in range(4)}
36
+ }
37
+
38
+ def record(self, skill_level, critical, parser):
39
+ if skill_level not in self.bind_skills:
40
+ return
41
+ self.bind_skill = self.bind_skills[skill_level]
42
+ super().record(skill_level, critical, parser)
43
+
44
+
45
+ SKILLS: Dict[int, Skill | dict] = {
46
+ 32467: {
47
+ "skill_class": MagicalDamage,
48
+ "skill_name": "破",
49
+ "surplus_cof": [
50
+ -1048576 * (1 - (0.2813 * 0.83 * 0.927 * 1.15 * (1 + 0.2 * i)))
51
+ for i in range(7)
52
+ ]
53
+ },
54
+ 11: {
55
+ "skill_class": PhysicalDamage,
56
+ "skill_name": "六合棍",
57
+ "attack_power_cof": 16,
58
+ "weapon_damage_cof": 1024,
59
+ "skill_damage_addition": 205
60
+ },
61
+ 711: {
62
+ "skill_class": MagicalDotDamage,
63
+ "skill_name": "兰摧玉折(DOT)",
64
+ "damage_base": 30,
65
+ "attack_power_cof": [(28 + 48 * 0.9 * 1.25 * 1.15 * 1.05 * 1.1 * 1.05 * 1.15 * 1.1) * 1.05 * 1.05 * 1.05] * 9 +
66
+ [(28 + (48 + (i - 9) * 9) * 0.9 * 1.25 * 1.15 * 1.05 * 1.1 * 1.05 * 1.15 * 1.1) * 1.05 *
67
+ 1.05 * 1.05 for i in range(10, 19)] +
68
+ [(28 + 155 * 0.9 * 1.25 * 1.15 * 1.05 * 1.1 * 1.05 * 1.15 * 1.1) * 1.05 * 1.05 * 1.05],
69
+ "interval": 48
70
+ },
71
+ **{
72
+ skill_id: {
73
+ "skill_class": DotSkill,
74
+ "skill_name": "兰摧玉折",
75
+ "bind_skill": 711,
76
+ "tick": 6 + 1
77
+ } for skill_id in (13848, 6136) # 18730
78
+ },
79
+ 6129: {
80
+ "skill_class": DotConsumeSkill,
81
+ "skill_name": "兰摧玉折",
82
+ "bind_skill": 711,
83
+ "tick": 99,
84
+ "buff_levels": {5: 2, 6: 1}
85
+ },
86
+ 714: {
87
+ "skill_class": MagicalDotDamage,
88
+ "skill_name": "钟林毓秀(DOT)",
89
+ "damage_base": 38,
90
+ "attack_power_cof": [48 * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.1 * 1.05 * 1.05 * 1.05] * 9 +
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
+ },
96
+ **{
97
+ skill_id: {
98
+ "skill_class": DotSkill,
99
+ "skill_name": "钟林毓秀",
100
+ "bind_skill": 714,
101
+ "tick": 6 + 1
102
+ } for skill_id in (285, 13847, 6135)
103
+ },
104
+ 6126: {
105
+ "skill_class": DotConsumeSkill,
106
+ "skill_name": "钟林毓秀",
107
+ "bind_skill": 714,
108
+ "tick": 99,
109
+ "buff_levels": {5: 2, 6: 1}
110
+ },
111
+ 14941: {
112
+ "skill_class": MagicalDamage,
113
+ "skill_name": "阳明指",
114
+ "damage_base": [38, 44, 49, 54, 59, 63, 69, 71, 73, 75, 77, 79, 81, 83, 85, 86, 90, 94, 98, 102, 105, 110, 115, 120, 125, 135, 145, 155],
115
+ "damage_rand": [5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28],
116
+ "attack_power_cof": [48 * 1.365 * 1.2 * 1.05 * 1.1 * 1.15] * 9 +
117
+ [(48 + (i - 9) * 4) * 1.365 * 1.2 * 1.05 * 1.1 * 1.15 for i in range(10, 28)] +
118
+ [130 * 1.365 * 1.2 * 1.05 * 1.1 * 1.15],
119
+ },
120
+ 666: {
121
+ "skill_class": MagicalDotDamage,
122
+ "skill_name": "商阳指(DOT)",
123
+ "damage_base": 50,
124
+ "attack_power_cof": [64 * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.05 * 1.05 * 1.1] * 9 +
125
+ [(64 + (i - 9) * 4) * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.05 * 1.05 * 1.1 for i in
126
+ range(10, 29)] +
127
+ [161 * 0.9 * 1.25 * 1.15 * 1.05 * 1.15 * 1.05 * 1.05 * 1.1],
128
+ "interval": 48
129
+ },
130
+ **{
131
+ skill_id: {
132
+ "skill_class": DotSkill,
133
+ "skill_name": "商阳指",
134
+ "bind_skill": 666,
135
+ "tick": 6 + 1
136
+ } for skill_id in (180, 6134)
137
+ },
138
+ 6128: {
139
+ "skill_class": DotConsumeSkill,
140
+ "skill_name": "商阳指",
141
+ "bind_skill": 666,
142
+ "tick": 99,
143
+ "buff_levels": {5: 2, 6: 1}
144
+ },
145
+ 6693: {
146
+ "skill_class": MagicalDamage,
147
+ "skill_name": "商阳指",
148
+ "attack_power_cof": [64 * 1.15] * 9 +
149
+ [(64 + (i - 9) * 4) * 1.15 for i in range(10, 29)] +
150
+ [161 * 1.15],
151
+ },
152
+ 182: {
153
+ "skill_class": MagicalDamage,
154
+ "skill_name": "玉石俱焚",
155
+ "damage_base": [20, 22, 24, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68,
156
+ 69, 72, 75, 78, 81],
157
+ "damage_rand": [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10],
158
+ "attack_power_cof": 64 * 1.15
159
+ },
160
+ 186: {
161
+ "skill_class": MagicalDamage,
162
+ "skill_name": "芙蓉并蒂",
163
+ "damage_base": [28, 43, 61, 76],
164
+ "damage_rand": 5,
165
+ "attack_power_cof": 64 * 1.15
166
+ },
167
+ 33222: {
168
+ "skill_class": MagicalDamage,
169
+ "skill_name": "快雪时晴",
170
+ "damage_base": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55,
171
+ 57, 59, 61, 63, 65],
172
+ "damage_rand": [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10],
173
+ "attack_power_cof": [44 * 0.9 * 1.05 * 1.1 * 1.15 * 1.23] * 9 +
174
+ [(44 + (i - 9) * 2) * 0.9 * 1.05 * 1.1 * 1.15 * 1.23 for i in range(10, 29)] +
175
+ [84 * 0.9 * 1.05 * 1.1 * 1.15 * 1.23],
176
+ "skill_damage_addition": 512,
177
+ },
178
+ 24158: {
179
+ "skill_class": MagicalDotDamage,
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
+ },
185
+ **{
186
+ skill_id: {
187
+ "skill_class": DotSkill,
188
+ "skill_name": "快雪时晴",
189
+ "bind_skill": 24158,
190
+ "tick": 7,
191
+ "max_stack": 6
192
+ } for skill_id in (32409, 32481)
193
+ },
194
+ 32410: {
195
+ "skill_class": DotConsumeSkill,
196
+ "skill_name": "快雪时晴",
197
+ "bind_skill": 24158,
198
+ "tick": 99,
199
+ "buff_levels": {2: 2, 3: 1}
200
+ },
201
+ 601: {
202
+ "skill_class": GeneraConsumeSkill,
203
+ "skill_name": "折花吞噬",
204
+ },
205
+ 32501: {
206
+ "skill_class": MagicalDamage,
207
+ "skill_name": "折花",
208
+ "damage_base": 155,
209
+ "damage_rand": 28,
210
+ "attack_power_cof": [304] * 3 + [334]
211
+ },
212
+ 37525: {
213
+ "skill_class": MagicalDamage,
214
+ "skill_name": "钟灵",
215
+ "damage_base": 121,
216
+ "damage_rand": 10,
217
+ "attack_power_cof": 328
218
+ },
219
+ 37270: {
220
+ "skill_class": MagicalDamage,
221
+ "skill_name": ["墨海", "临源"],
222
+ "damage_base": 33,
223
+ "damage_rand": 2,
224
+ "damage_gain": 1.05 * 2 / 2,
225
+ "attack_power_cof": [1800 * 1.1] +
226
+ [1800 * 2.5 * 1.1],
227
+ },
228
+ 25768: {
229
+ "skill_class": MagicalDamage,
230
+ "skill_name": "兰摧玉折·神兵",
231
+ "damage_base": 20,
232
+ "damage_rand": 2,
233
+ "attack_power_cof": 100
234
+ }
235
+ }
236
+
237
+ for skill_id, detail in SKILLS.items():
238
+ SKILLS[skill_id] = detail.pop('skill_class')(skill_id)
239
+ for attr, value in detail.items():
240
+ setattr(SKILLS[skill_id], attr, value)
241
+
242
+ for skill_id, skill in GENERAL_SKILLS.items():
243
+ SKILLS[skill_id] = skill
schools/hua_jian_you/talents.py ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Dict
2
+
3
+ from base.buff import Buff
4
+ from base.gain import Gain
5
+ from base.skill import Skill
6
+
7
+
8
+ class 烟霞(Gain):
9
+ def add_skills(self, skills: Dict[int, Skill]):
10
+ skills[14941].skill_critical_strike += 1000
11
+ skills[14941].skill_critical_power += 102
12
+
13
+ def sub_skills(self, skills: Dict[int, Skill]):
14
+ skills[14941].skill_critical_strike -= 1000
15
+ skills[14941].skill_critical_power -= 102
16
+
17
+
18
+ class 青冠(Gain):
19
+ def add_buffs(self, buffs: Dict[int, Buff]):
20
+ buffs[-32489].activate = True
21
+
22
+ def sub_buffs(self, buffs: Dict[int, Buff]):
23
+ buffs[-32489].activate = False
24
+
25
+
26
+ TALENT_GAINS: Dict[int, Gain] = {
27
+ 5756: 烟霞("烟霞"),
28
+ 32489: 青冠("青冠"),
29
+ 17510: Gain("倚天"),
30
+ 37267: Gain("墨海临源"),
31
+ 21744: Gain("折花"),
32
+ 32477: Gain("雪中行"),
33
+ 16855: Gain("清流"),
34
+ 26692: Gain("钟灵"),
35
+ 6682: Gain("流离"),
36
+ 32480: Gain("雪弃"),
37
+ 32469: Gain("焚玉"),
38
+ 14643: Gain("涓流")
39
+ }
40
+
41
+ TALENTS = [
42
+ [5756],
43
+ [32489],
44
+ [17510],
45
+ [37267],
46
+ [21744],
47
+ [32477],
48
+ [16855],
49
+ [26692],
50
+ [6682],
51
+ [32480],
52
+ [32469],
53
+ [14643]
54
+ ]
55
+ TALENT_DECODER = {talent_id: talent.gain_name for talent_id, talent in TALENT_GAINS.items()}
56
+ TALENT_ENCODER = {v: k for k, v in TALENT_DECODER.items()}
schools/ling_hai_jue/buffs.py CHANGED
@@ -64,7 +64,7 @@ BUFFS = {
64
  }
65
 
66
  for buff_id, detail in BUFFS.items():
67
- BUFFS[buff_id] = Buff(buff_id, detail.pop("buff_name"))
68
  for attr, value in detail.items():
69
  setattr(BUFFS[buff_id], attr, value)
70
 
 
64
  }
65
 
66
  for buff_id, detail in BUFFS.items():
67
+ BUFFS[buff_id] = Buff(buff_id)
68
  for attr, value in detail.items():
69
  setattr(BUFFS[buff_id], attr, value)
70
 
schools/mo_wen/__init__.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from schools.mo_wen.skills import SKILLS
2
+ from schools.mo_wen.buffs import BUFFS
3
+ from schools.mo_wen.talents import TALENT_GAINS, TALENTS, TALENT_DECODER, TALENT_ENCODER
4
+ from schools.mo_wen.recipes import RECIPE_GAINS, RECIPES
5
+ from schools.mo_wen.gains import GAINS
6
+ from schools.mo_wen.attribute import MoWen
7
+
8
+
9
+ def prepare(self, player_id):
10
+ pass
schools/mo_wen/attribute.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from base.attribute import MagicalAttribute
2
+ from base.constant import *
3
+
4
+
5
+ class MoWen(MagicalAttribute):
6
+ SPIRIT_TO_ATTACK_POWER = 1895 / BINARY_SCALE
7
+ SPIRIT_TO_CRITICAL_STRIKE = 389 / BINARY_SCALE
8
+
9
+ def __init__(self):
10
+ super().__init__()
11
+ self.magical_attack_power_base += 3725
12
+ self.magical_critical_strike_base += 1279
13
+ self.pve_addition += 164
14
+
15
+ @property
16
+ def extra_magical_attack_power(self):
17
+ return int(self.spirit * self.SPIRIT_TO_ATTACK_POWER)
18
+
19
+ @property
20
+ def extra_magical_critical_strike(self):
21
+ return int(self.spirit * self.SPIRIT_TO_CRITICAL_STRIKE)
schools/mo_wen/buffs.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from base.buff import Buff
2
+ from general.buffs import GENERAL_BUFFS
3
+
4
+ BUFFS = {
5
+ 9586: {
6
+ "buff_name": "挥散",
7
+ "activate": False,
8
+ "gain_attributes": {
9
+ "magical_critical_strike_gain": 400,
10
+ "magical_critical_power_gain": 41
11
+ }
12
+ },
13
+ 9433: {
14
+ "buff_name": "阳春白雪",
15
+ "gain_skills": {
16
+ skill_id: {
17
+ "skill_shield_gain": [-307, -614, -921]
18
+ } for skill_id in (14227, 18859, 18860)
19
+ }
20
+ },
21
+ 12576: {
22
+ "buff_name": "云汉",
23
+ "frame_shift": -3,
24
+ "gain_attributes": {
25
+ "all_damage_addition": 51,
26
+ }
27
+ },
28
+ 9495: {
29
+ "buff_name": "明津",
30
+ "gain_skills": {
31
+ **{
32
+ skill_id: {
33
+ "skill_damage_addition": 205,
34
+ } for skill_id in (14227, 18859, 14100, 18860)
35
+ },
36
+ **{
37
+ skill_id: {
38
+ "attack_power_cof_gain": 0.2
39
+ } for skill_id in (9357, 9361)
40
+ }
41
+ }
42
+ },
43
+ 9437: {
44
+ "buff_name": "参连",
45
+ "gain_attributes": {
46
+ "magical_attack_power_gain": 102
47
+ }
48
+ },
49
+ 25997: {
50
+ "buff_name": "知音妙意",
51
+ "frame_shift": -1,
52
+ "gain_attributes": {
53
+ "magical_critical_power_gain": [102, 204, 410]
54
+ }
55
+ },
56
+ }
57
+
58
+ for buff_id, detail in BUFFS.items():
59
+ BUFFS[buff_id] = Buff(buff_id)
60
+ for attr, value in detail.items():
61
+ setattr(BUFFS[buff_id], attr, value)
62
+
63
+ for buff_id, buff in GENERAL_BUFFS.items():
64
+ BUFFS[buff_id] = buff
schools/mo_wen/gains.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from base.recipe import damage_addition_recipe, critical_strike_recipe
2
+ from general.gains.equipment import EQUIPMENT_GAINS, CriticalSet
3
+ from base.gain import Gain
4
+
5
+ GAINS = {
6
+ 1924: CriticalSet(9586),
7
+ 2209: damage_addition_recipe([18860], 102),
8
+ 2210: damage_addition_recipe([14227, 18859], 102),
9
+ 2401: damage_addition_recipe([18860], 51),
10
+ 2402: damage_addition_recipe([14100], 51),
11
+ 2415: Gain(),
12
+ 1941: Gain(),
13
+ 17306: Gain(),
14
+ 17314: Gain(),
15
+ **EQUIPMENT_GAINS,
16
+ }
schools/mo_wen/recipes.py ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Dict, List
2
+
3
+ from base.gain import Gain
4
+ from base.recipe import attack_power_recipe, damage_addition_recipe, critical_strike_recipe
5
+
6
+
7
+ RECIPE_GAINS: Dict[str, Dict[str, Gain]] = {
8
+ "宫": {
9
+ "4%伤害": damage_addition_recipe([18860], 41),
10
+ "3%伤害": damage_addition_recipe([18860], 31),
11
+ "4%会心": critical_strike_recipe([18860], 400),
12
+ "3%会心": critical_strike_recipe([18860], 300),
13
+ "2%会心": critical_strike_recipe([18860], 200),
14
+ },
15
+ "商": {
16
+ "5%伤害": attack_power_recipe([14311, 9357], 1.05),
17
+ "4%伤害": attack_power_recipe([14311, 9357], 1.04),
18
+ "3%伤害": attack_power_recipe([14311, 9357], 1.03),
19
+ "4%会心": critical_strike_recipe([14311, 9357], 400),
20
+ "3%会心": critical_strike_recipe([14311, 9357], 300),
21
+ "2%会心": critical_strike_recipe([14311, 9357], 200),
22
+ },
23
+ "徵": {
24
+ "4%伤害": damage_addition_recipe([14227, 18859], 41),
25
+ "3%伤害": damage_addition_recipe([14227, 18859], 31),
26
+ "4%会心": critical_strike_recipe([14227, 18859], 400),
27
+ "3%会心": critical_strike_recipe([14227, 18859], 300),
28
+ "2%会心": critical_strike_recipe([14227, 18859], 200),
29
+ },
30
+ "羽": {
31
+ "4%伤害": damage_addition_recipe([14100], 41),
32
+ "3%伤害": damage_addition_recipe([14100], 31),
33
+ "4%会心": critical_strike_recipe([14100], 400),
34
+ "3%会心": critical_strike_recipe([14100], 300),
35
+ }
36
+ }
37
+
38
+ RECIPES: Dict[str, List[str]] = {
39
+ "宫": ["4%伤害", "4%会心", "3%伤害", "3%会心", "2%会心"],
40
+ "商": ["5%伤害", "4%伤害", "4%会心", "3%伤害", "3%会心", "2%会心"],
41
+ "徵": ["4%伤害", "4%会心", "3%伤害", "3%会心", "2%会心"],
42
+ "羽": ["4%伤害", "4%会心", "3%伤害", "3%会心"],
43
+ }
schools/mo_wen/skills.py ADDED
@@ -0,0 +1,209 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Dict
2
+
3
+ from base.constant import GLOBAL_DAMAGE_FACTOR
4
+ from base.skill import Skill, DotSkill, PhysicalDamage, MagicalDamage, MagicalDotDamage, MagicalPetDamage
5
+ from general.skills import GENERAL_SKILLS
6
+
7
+ SKILLS: Dict[int, Skill | dict] = {
8
+ 32738: {
9
+ "skill_class": MagicalDamage,
10
+ "skill_name": ["破", "破", "破", "破·流照", "破·争鸣"],
11
+ "surplus_cof": [
12
+ 1048576 * (0.25 * 0.5 * 1.3 * 1.2 * 0.5 * 1.11 * 0.9 - 1),
13
+ 1048576 * (0.3 * 0.5 * 1.3 * 1.2 * 0.5 * 1.11 * 0.9 - 1),
14
+ 1048576 * (0.36 * 0.5 * 1.3 * 1.2 * 0.5 * 1.11 * 0.9 - 1),
15
+ 1048576 * (0.125 * 0.5 * 1.3 * 1.2 * 0.5 * 1.11 * 1.17 - 1),
16
+ 1048576 * (0.36 * 0.7 * 1.15 - 1)
17
+ ]
18
+ },
19
+ 14063: {
20
+ "skill_class": PhysicalDamage,
21
+ "skill_name": "五音六律",
22
+ "attack_power_cof": 16,
23
+ "weapon_damage_cof": 1024,
24
+ },
25
+ 14494: {
26
+ "skill_class": MagicalDamage,
27
+ "skill_name": "阳春白雪",
28
+ "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,
29
+ 107, 110],
30
+ "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,
31
+ 10],
32
+ "damage_gain": 0.7,
33
+ "attack_power_cof": 64 * 1.4,
34
+ },
35
+ 15076: {
36
+ "skill_class": MagicalPetDamage,
37
+ "skill_name": "宫",
38
+ "damage_base": [34, 45, 55, 65, 75, 85, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 125, 130, 135, 140,
39
+ 145, 150, 155, 160],
40
+ "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],
41
+ "attack_power_cof": [80 * 0.2 * 0.85 * 1.1] * 9 +
42
+ [(80 + (i - 9) * 6) * 0.2 * 0.85 * 1.1 for i in range(10, 25)] +
43
+ [200 * 0.2 * 0.85 * 1.1],
44
+ "interval": 24
45
+ },
46
+ 9357: {
47
+ "skill_class": MagicalDotDamage,
48
+ "skill_name": "商(DOT)",
49
+ "damage_base": 58,
50
+ "attack_power_cof": [48 * 1.1 * 1.05 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05] * 9 +
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: {
65
+ "skill_class": MagicalDamage,
66
+ "skill_name": "商",
67
+ "damage_base": [e * 0.7 for e in
68
+ [20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 98, 101, 104,
69
+ 107, 110]],
70
+ "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,
71
+ 10],
72
+ "attack_power_cof": [64 * 1.2 * 1.05 * 1.2 * 1.12 * 1.05] +
73
+ [64 * 1.2 * 1.05 * 1.2 * 1.12 * 1.5 * 1.05] +
74
+ [64 * 1.2 * 1.05 * 1.2 * 1.12 * 2 * 1.05],
75
+ },
76
+ 9361: {
77
+ "skill_class": MagicalDotDamage,
78
+ "skill_name": "角(DOT)",
79
+ "damage_base": 58,
80
+ "attack_power_cof": [48 * 1.05 * 1.05 * 1.12 * 1.05 * 1.1 * 1.05] * 9 +
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: {
95
+ "skill_class": MagicalDamage,
96
+ "skill_name": "角",
97
+ "damage_base": [e * 0.7 for e in
98
+ [20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 98, 101, 104,
99
+ 107, 110]],
100
+ "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,
101
+ 10],
102
+ "attack_power_cof": [64 * 1.2 * 1.05 * 1.2 * 1.12 * 1.05] +
103
+ [64 * 1.2 * 1.05 * 1.2 * 1.12 * 1.5 * 1.05] +
104
+ [64 * 1.2 * 1.05 * 1.2 * 1.12 * 2 * 1.05],
105
+ },
106
+ **{
107
+ skill_id: {
108
+ "skill_class": MagicalDamage,
109
+ "skill_name": "徵",
110
+ "damage_base": [70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160,
111
+ 165,
112
+ 170, 175, 180, 185, 190],
113
+ "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],
114
+ "attack_power_cof": [40 * 1.2 * 1.09 * 1.65] * 9 +
115
+ [(40 + (i - 9) * 3) * 1.2 * 1.09 * 1.65 for i in range(10, 25)] +
116
+ [95 * 1.2 * 1.09 * 1.65],
117
+ } for skill_id in (14227, 18859)
118
+ },
119
+ 14100: {
120
+ "skill_class": MagicalDamage,
121
+ "skill_name": "羽",
122
+ "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,
123
+ 107, 110],
124
+ "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,
125
+ 10],
126
+ "damage_gain": 1.3,
127
+ "attack_power_cof": [60 * 1.1 * 1.3 * 1.15 * 1.1 * 1.1 * 1.05 * 1.1] * 9 +
128
+ [(60 + (i - 9) * 3) * 1.1 * 1.3 * 1.15 * 1.1 * 1.1 * 1.05 * 1.1 for i in range(10, 25)] +
129
+ [115 * 1.1 * 1.3 * 1.15 * 1.1 * 1.1 * 1.05 * 1.1],
130
+ },
131
+ 18860: {
132
+ "skill_class": MagicalDamage,
133
+ "skill_name": "变宫",
134
+ "damage_base": [34, 45, 55, 65, 75, 85, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 125, 130, 135, 140,
135
+ 145, 150, 155, 160],
136
+ "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],
137
+ "attack_power_cof": [80 * 1.2 * 1.1 * 1.05] * 9 +
138
+ [80 + (i - 9) * 6 * 1.2 * 1.1 * 1.05 for i in range(10, 25)] +
139
+ [200 * 1.2 * 1.1 * 1.05],
140
+ },
141
+ 32624: {
142
+ "skill_class": MagicalDamage,
143
+ "skill_name": "弦风",
144
+ "damage_base": 40,
145
+ "damage_rand": 2,
146
+ "attack_power_cof": 40 * 1.2 * 1.25,
147
+ },
148
+ 30799: {
149
+ "skill_class": MagicalDamage,
150
+ "skill_name": "流照",
151
+ "damage_base": 107,
152
+ "damage_rand": 27,
153
+ "attack_power_cof": 117 * 0.35 * 1.5,
154
+ "skill_shield_gain": -922
155
+ },
156
+ 34676: {
157
+ "skill_class": MagicalDamage,
158
+ "skill_name": "知音兴尽",
159
+ "damage_base": 40,
160
+ "damage_rand": 6,
161
+ "attack_power_cof": [(3750 + 125 * (i + 1)) * 0.2 * 10 * 1.2 * 1.15 for i in range(21)] +
162
+ [2810 * 0.2 * 1.2 * 1.15] * 2 +
163
+ [3250 * 0.2 * 1.2 * 1.15],
164
+ "global_damage_factor": GLOBAL_DAMAGE_FACTOR(1048576 * (0.25 * 0.5 * 1.3 * 1.2 * 0.5 * 1.11 * 0.9 - 1))
165
+ },
166
+ 25781: {
167
+ "skill_class": MagicalDamage,
168
+ "skill_name": "羽·神兵",
169
+ "damage_base": 20,
170
+ "damage_rand": 2,
171
+ "attack_power_cof": 50
172
+ },
173
+ 31008: {
174
+ "skill_class": MagicalDamage,
175
+ "skill_name": "宫·神兵",
176
+ "damage_base": 100,
177
+ "damage_rand": 10,
178
+ "attack_power_cof": 200 * 1.2 * 1.1 * 1.05
179
+ },
180
+ 31138: {
181
+ "skill_class": MagicalDamage,
182
+ "skill_name": "变宫·神兵",
183
+ "damage_base": 100,
184
+ "damage_rand": 10,
185
+ "attack_power_cof": 200 * 1.2 * 1.1 * 1.05
186
+ },
187
+ 23187: {
188
+ "skill_class": MagicalDotDamage,
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
+
203
+ for skill_id, detail in SKILLS.items():
204
+ SKILLS[skill_id] = detail.pop('skill_class')(skill_id)
205
+ for attr, value in detail.items():
206
+ setattr(SKILLS[skill_id], attr, value)
207
+
208
+ for skill_id, skill in GENERAL_SKILLS.items():
209
+ SKILLS[skill_id] = skill
schools/mo_wen/talents.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ for skill_id in (14227, 18859):
10
+ skills[skill_id].attack_power_cof_gain *= 1.1
11
+
12
+ def sub_skills(self, skills: Dict[int, Skill]):
13
+ for skill_id in (14227, 18859):
14
+ skills[skill_id].attack_power_cof_gain /= 1.1
15
+
16
+
17
+ class 师襄(Gain):
18
+ def add_skills(self, skills: Dict[int, Skill]):
19
+ skills[14100].skill_shield_gain -= 614
20
+
21
+ def sub_skills(self, skills: Dict[int, Skill]):
22
+ skills[14100].skill_shield_gain += 614
23
+
24
+
25
+ class 刻梦(Gain):
26
+ def add_skills(self, skills: Dict[int, Skill]):
27
+ skills[15076].skill_critical_strike += 1000
28
+ skills[15076].skill_critical_power += 102
29
+
30
+ def sub_skills(self, skills: Dict[int, Skill]):
31
+ skills[15076].skill_critical_strike -= 1000
32
+ skills[15076].skill_critical_power -= 102
33
+
34
+
35
+ TALENT_GAINS: Dict[int, Gain] = {
36
+ 14246: 飞帆("飞帆"),
37
+ 35981: Gain("明津"),
38
+ 32485: Gain("弦风"),
39
+ 30562: Gain("流照"),
40
+ 14336: Gain("豪情"),
41
+ 14282: 师襄("师襄"),
42
+ 30984: Gain("知止"),
43
+ 14873: 刻梦("刻梦"),
44
+ 35982: Gain("争鸣"),
45
+ 18712: Gain("云汉"),
46
+ 14350: Gain("参连"),
47
+ 34344: Gain("正律和鸣")
48
+ }
49
+
50
+ TALENTS = [
51
+ [14246],
52
+ [35981],
53
+ [32485],
54
+ [30562],
55
+ [14336],
56
+ [14282],
57
+ [30984],
58
+ [14873],
59
+ [35982],
60
+ [18712],
61
+ [14350],
62
+ [34344]
63
+ ]
64
+ TALENT_DECODER = {talent_id: talent.gain_name for talent_id, talent in TALENT_GAINS.items()}
65
+ TALENT_ENCODER = {v: k for k, v in TALENT_DECODER.items()}
schools/shan_hai_xin_jue/buffs.py CHANGED
@@ -28,7 +28,7 @@ BUFFS: Dict[int, Buff | dict] = {
28
  }
29
 
30
  for buff_id, detail in BUFFS.items():
31
- BUFFS[buff_id] = Buff(buff_id, detail.pop("buff_name"))
32
  for attr, value in detail.items():
33
  setattr(BUFFS[buff_id], attr, value)
34
 
 
28
  }
29
 
30
  for buff_id, detail in BUFFS.items():
31
+ BUFFS[buff_id] = Buff(buff_id)
32
  for attr, value in detail.items():
33
  setattr(BUFFS[buff_id], attr, value)
34
 
schools/tai_xu_jian_yi/buffs.py CHANGED
@@ -53,7 +53,7 @@ BUFFS: Dict[int, Buff | dict] = {
53
  }
54
 
55
  for buff_id, detail in BUFFS.items():
56
- BUFFS[buff_id] = Buff(buff_id, detail.pop("buff_name"))
57
  for attr, value in detail.items():
58
  setattr(BUFFS[buff_id], attr, value)
59
 
 
53
  }
54
 
55
  for buff_id, detail in BUFFS.items():
56
+ BUFFS[buff_id] = Buff(buff_id)
57
  for attr, value in detail.items():
58
  setattr(BUFFS[buff_id], attr, value)
59
 
schools/tian_luo_gui_dao/buffs.py CHANGED
@@ -72,7 +72,7 @@ BUFFS = {
72
  }
73
 
74
  for buff_id, detail in BUFFS.items():
75
- BUFFS[buff_id] = Buff(buff_id, detail.pop("buff_name"))
76
  for attr, value in detail.items():
77
  setattr(BUFFS[buff_id], attr, value)
78
 
 
72
  }
73
 
74
  for buff_id, detail in BUFFS.items():
75
+ BUFFS[buff_id] = Buff(buff_id)
76
  for attr, value in detail.items():
77
  setattr(BUFFS[buff_id], attr, value)
78
 
schools/wu_fang/buffs.py CHANGED
@@ -45,7 +45,7 @@ BUFFS = {
45
  }
46
 
47
  for buff_id, detail in BUFFS.items():
48
- BUFFS[buff_id] = Buff(buff_id, detail.pop("buff_name"))
49
  for attr, value in detail.items():
50
  setattr(BUFFS[buff_id], attr, value)
51
 
 
45
  }
46
 
47
  for buff_id, detail in BUFFS.items():
48
+ BUFFS[buff_id] = Buff(buff_id)
49
  for attr, value in detail.items():
50
  setattr(BUFFS[buff_id], attr, value)
51
 
schools/yi_jin_jing/buffs.py CHANGED
@@ -90,7 +90,7 @@ BUFFS = {
90
  }
91
 
92
  for buff_id, detail in BUFFS.items():
93
- BUFFS[buff_id] = Buff(buff_id, detail.pop("buff_name"))
94
  for attr, value in detail.items():
95
  setattr(BUFFS[buff_id], attr, value)
96
 
 
90
  }
91
 
92
  for buff_id, detail in BUFFS.items():
93
+ BUFFS[buff_id] = Buff(buff_id)
94
  for attr, value in detail.items():
95
  setattr(BUFFS[buff_id], attr, value)
96
 
schools/yi_jin_jing/skills.py CHANGED
@@ -67,7 +67,7 @@ SKILLS: Dict[int, Skill | dict] = {
67
  243, 253, 263, 273, 283, 293, 303, 313]],
68
  "damage_rand": [5, 5, 5, 5, 5, 5, 5, 5] + [10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15,
69
  15, 15, 15],
70
- "attack_power_cof": [16 * 1.1 * 1.15 * 1.1 * 1.05 * 1.2] * 10 +
71
  [(16 + (i - 9) * 6) * 1.1 * 1.15 * 1.1 * 1.05 * 1.2 for i in range(10, 28)] +
72
  [128 * 1.1 * 1.15 * 1.1 * 1.05 * 1.2],
73
  "bind_buff": 890,
@@ -144,7 +144,7 @@ SKILLS: Dict[int, Skill | dict] = {
144
  "skill_name": "守缺式",
145
  "damage_base": [52, 62, 72, 82, 92, 102, 112, 122, 132, 142],
146
  "damage_rand": 5,
147
- "attack_power_cof": [(120 + (i - 1) * 5) * 1.15 * 0.95 * 1.05 * 1.2 * 1.1 for i in range(10)] +
148
  [200 * 1.2 * 1.15 * 0.95 * 1.05 * 1.2 * 1.1],
149
  },
150
  3816: {
@@ -152,7 +152,7 @@ SKILLS: Dict[int, Skill | dict] = {
152
  "skill_name": "守缺式",
153
  "damage_base": [52, 62, 72, 82, 92, 102, 112, 122, 132, 142],
154
  "damage_rand": 5,
155
- "attack_power_cof": [(120 + (i - 1) * 5) * 1.15 * 0.95 * 1.05 * 1.1 for i in range(10)] +
156
  [200 * 1.2 * 1.15 * 0.95 * 1.05 * 1.1],
157
  },
158
  13685: {
 
67
  243, 253, 263, 273, 283, 293, 303, 313]],
68
  "damage_rand": [5, 5, 5, 5, 5, 5, 5, 5] + [10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15,
69
  15, 15, 15],
70
+ "attack_power_cof": [16 * 1.1 * 1.15 * 1.1 * 1.05 * 1.2] * 9 +
71
  [(16 + (i - 9) * 6) * 1.1 * 1.15 * 1.1 * 1.05 * 1.2 for i in range(10, 28)] +
72
  [128 * 1.1 * 1.15 * 1.1 * 1.05 * 1.2],
73
  "bind_buff": 890,
 
144
  "skill_name": "守缺式",
145
  "damage_base": [52, 62, 72, 82, 92, 102, 112, 122, 132, 142],
146
  "damage_rand": 5,
147
+ "attack_power_cof": [(120 + i * 5) * 1.15 * 0.95 * 1.05 * 1.2 * 1.1 for i in range(10)] +
148
  [200 * 1.2 * 1.15 * 0.95 * 1.05 * 1.2 * 1.1],
149
  },
150
  3816: {
 
152
  "skill_name": "守缺式",
153
  "damage_base": [52, 62, 72, 82, 92, 102, 112, 122, 132, 142],
154
  "damage_rand": 5,
155
+ "attack_power_cof": [(120 + i * 5) * 1.15 * 0.95 * 1.05 * 1.1 for i in range(10)] +
156
  [200 * 1.2 * 1.15 * 0.95 * 1.05 * 1.1],
157
  },
158
  13685: {
utils/analyzer.py CHANGED
@@ -4,7 +4,7 @@ from typing import Dict
4
 
5
  from base.attribute import Attribute
6
  from base.constant import FRAME_PER_SECOND
7
- from base.skill import Skill, DotDamage
8
  from utils.parser import School
9
 
10
 
@@ -37,7 +37,9 @@ def filter_status(status, school: School, skill_id):
37
  if not buff.activate:
38
  continue
39
  buff.buff_level, buff.buff_stack = buff_level, buff_stack
40
- if buff.gain_attributes or skill_id in buff.gain_skills:
 
 
41
  buffs.append(buff)
42
 
43
  return tuple(sorted(buffs, key=lambda x: x.buff_id))
@@ -52,6 +54,9 @@ def add_buffs(current_buffs, snapshot_buffs, attribute: Attribute, skill: Skill)
52
  buff.add_dot(attribute, skill, True)
53
  for buff in current_buffs:
54
  buff.add_dot(attribute, skill, False)
 
 
 
55
 
56
 
57
  def sub_buffs(current_buffs, snapshot_buffs, attribute: Attribute, skill: Skill):
@@ -63,6 +68,9 @@ def sub_buffs(current_buffs, snapshot_buffs, attribute: Attribute, skill: Skill)
63
  buff.sub_dot(attribute, skill, True)
64
  for buff in current_buffs:
65
  buff.sub_dot(attribute, skill, False)
 
 
 
66
 
67
 
68
  def concat_buffs(current_buffs, snapshot_buffs):
 
4
 
5
  from base.attribute import Attribute
6
  from base.constant import FRAME_PER_SECOND
7
+ from base.skill import Skill, DotDamage, PetDamage
8
  from utils.parser import School
9
 
10
 
 
37
  if not buff.activate:
38
  continue
39
  buff.buff_level, buff.buff_stack = buff_level, buff_stack
40
+ if buff.gain_attributes:
41
+ buffs.append(buff)
42
+ if skill_id in buff.gain_skills:
43
  buffs.append(buff)
44
 
45
  return tuple(sorted(buffs, key=lambda x: x.buff_id))
 
54
  buff.add_dot(attribute, skill, True)
55
  for buff in current_buffs:
56
  buff.add_dot(attribute, skill, False)
57
+ elif isinstance(skill, PetDamage):
58
+ for buff in snapshot_buffs:
59
+ buff.add_all(attribute, skill)
60
 
61
 
62
  def sub_buffs(current_buffs, snapshot_buffs, attribute: Attribute, skill: Skill):
 
68
  buff.sub_dot(attribute, skill, True)
69
  for buff in current_buffs:
70
  buff.sub_dot(attribute, skill, False)
71
+ elif isinstance(skill, PetDamage):
72
+ for buff in snapshot_buffs:
73
+ buff.sub_all(attribute, skill)
74
 
75
 
76
  def concat_buffs(current_buffs, snapshot_buffs):
utils/parser.py CHANGED
@@ -5,6 +5,7 @@ from schools import *
5
  from utils.lua import parse
6
 
7
  FRAME_TYPE, PLAYER_ID_TYPE, PLAYER_NAME_TYPE, PET_ID_TYPE = int, int, int, int
 
8
  SKILL_ID_TYPE, SKILL_LEVEL_TYPE, SKILL_STACK_TYPE, SKILL_CRITICAL_TYPE = int, int, int, bool
9
  SKILL_BUFFER_TYPE = Tuple[SKILL_ID_TYPE, SKILL_LEVEL_TYPE, SKILL_CRITICAL_TYPE]
10
  SKILL_TYPE = Tuple[SKILL_ID_TYPE, SKILL_LEVEL_TYPE, SKILL_STACK_TYPE]
@@ -12,7 +13,7 @@ BUFF_ID_TYPE, BUFF_LEVEL_TYPE, BUFF_STACK_TYPE = int, int, int
12
  BUFF_TYPE = Tuple[BUFF_ID_TYPE, BUFF_LEVEL_TYPE]
13
  STATUS_TYPE = Tuple[BUFF_ID_TYPE, BUFF_LEVEL_TYPE, BUFF_STACK_TYPE]
14
 
15
- SNAPSHOT_TYPE = Dict[SKILL_ID_TYPE, List[STATUS_TYPE]]
16
 
17
  TIMELINE_TYPE = List[Tuple[FRAME_TYPE, SKILL_CRITICAL_TYPE]]
18
  SUB_RECORD_TYPE = Dict[Tuple[tuple, tuple], TIMELINE_TYPE]
@@ -39,6 +40,7 @@ BUFFER_DELAY = 0
39
 
40
  class Parser:
41
  current_player: PLAYER_ID_TYPE
 
42
  current_frame: FRAME_TYPE
43
  frames: List[FRAME_TYPE]
44
 
@@ -163,15 +165,11 @@ class Parser:
163
  self.id2name[player_id] = player_name
164
  self.name2id[player_name] = player_id
165
  if school := SUPPORT_SCHOOL.get(detail[3]):
166
- self.school[player_id] = school
167
  self.select_equipments[player_id] = self.parse_equipments(detail[5])
168
  self.select_talents[player_id] = self.parse_talents(detail[6])
169
-
170
- def parse_pet(self, row):
171
- detail = row.strip("{}").split(",")
172
- pet_id, player_id = int(detail[0]), int(detail[3])
173
- if player_id in self.school:
174
- self.pets[pet_id] = player_id
175
 
176
  def parse_shift_buff(self, row):
177
  detail = row.strip("{}").split(",")
@@ -237,14 +235,25 @@ class Parser:
237
  if react or skill_id not in self.school[player_id].skills:
238
  return
239
 
 
 
 
240
  self.current_player = player_id
 
241
  skill = self.school[player_id].skills[skill_id]
242
  skill.record(skill_level, critical, self)
243
 
244
- if not self.start_frame:
245
- self.start_frame = self.current_frame
 
 
 
 
 
 
 
 
246
 
247
- def available_status(self, skill_id):
248
  current_status = []
249
  for (buff_id, buff_level), buff_stack in self.current_status.items():
250
  buff = self.current_school.buffs[buff_id]
@@ -254,7 +263,7 @@ class Parser:
254
  current_status.append((buff_id, buff_level, buff_stack))
255
 
256
  snapshot_status = []
257
- for (buff_id, buff_level), buff_stack in self.current_snapshot.get(skill_id, {}).items():
258
  buff = self.current_school.buffs[buff_id]
259
  if buff.gain_attributes:
260
  snapshot_status.append((buff_id, buff_level, buff_stack))
 
5
  from utils.lua import parse
6
 
7
  FRAME_TYPE, PLAYER_ID_TYPE, PLAYER_NAME_TYPE, PET_ID_TYPE = int, int, int, int
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_BUFFER_TYPE = Tuple[SKILL_ID_TYPE, SKILL_LEVEL_TYPE, SKILL_CRITICAL_TYPE]
11
  SKILL_TYPE = Tuple[SKILL_ID_TYPE, SKILL_LEVEL_TYPE, SKILL_STACK_TYPE]
 
13
  BUFF_TYPE = Tuple[BUFF_ID_TYPE, BUFF_LEVEL_TYPE]
14
  STATUS_TYPE = Tuple[BUFF_ID_TYPE, BUFF_LEVEL_TYPE, BUFF_STACK_TYPE]
15
 
16
+ SNAPSHOT_TYPE = Dict[SKILL_ID_TYPE | PET_ID_TYPE, Dict[BUFF_TYPE, BUFF_STACK_TYPE]]
17
 
18
  TIMELINE_TYPE = List[Tuple[FRAME_TYPE, SKILL_CRITICAL_TYPE]]
19
  SUB_RECORD_TYPE = Dict[Tuple[tuple, tuple], TIMELINE_TYPE]
 
40
 
41
  class Parser:
42
  current_player: PLAYER_ID_TYPE
43
+ current_caster: CASTER_ID_TYPE
44
  current_frame: FRAME_TYPE
45
  frames: List[FRAME_TYPE]
46
 
 
165
  self.id2name[player_id] = player_name
166
  self.name2id[player_name] = player_id
167
  if school := SUPPORT_SCHOOL.get(detail[3]):
 
168
  self.select_equipments[player_id] = self.parse_equipments(detail[5])
169
  self.select_talents[player_id] = self.parse_talents(detail[6])
170
+ if any(talent not in school.talent_gains for talent in self.select_talents[player_id]):
171
+ return
172
+ self.school[player_id] = school
 
 
 
173
 
174
  def parse_shift_buff(self, row):
175
  detail = row.strip("{}").split(",")
 
235
  if react or skill_id not in self.school[player_id].skills:
236
  return
237
 
238
+ if not self.start_frame:
239
+ self.start_frame = self.current_frame - 1
240
+
241
  self.current_player = player_id
242
+ self.current_caster = caster_id
243
  skill = self.school[player_id].skills[skill_id]
244
  skill.record(skill_level, critical, self)
245
 
246
+ def parse_pet(self, row):
247
+ detail = row.strip("{}").split(",")
248
+ pet_id, player_id = int(detail[0]), int(detail[3])
249
+ if player_id in self.school:
250
+ self.pets[pet_id] = player_id
251
+ self.snapshot[player_id][pet_id] = self.status[player_id].copy()
252
+
253
+ def available_status(self, skill_id, snapshot_id=None):
254
+ if not snapshot_id:
255
+ snapshot_id = skill_id
256
 
 
257
  current_status = []
258
  for (buff_id, buff_level), buff_stack in self.current_status.items():
259
  buff = self.current_school.buffs[buff_id]
 
263
  current_status.append((buff_id, buff_level, buff_stack))
264
 
265
  snapshot_status = []
266
+ for (buff_id, buff_level), buff_stack in self.current_snapshot.get(snapshot_id, {}).items():
267
  buff = self.current_school.buffs[buff_id]
268
  if buff.gain_attributes:
269
  snapshot_status.append((buff_id, buff_level, buff_stack))