Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	
		ango
		
	commited on
		
		
					Commit 
							
							·
						
						17a347d
	
1
								Parent(s):
							
							c255694
								
5.8 commit
Browse filesThis view is limited to 50 files because it contains too many changes.  
							See raw diff
- base/buff.py +37 -30
 - base/skill.py +22 -27
 - general/buffs/__init__.py +6 -0
 - general/{buffs.py → buffs/equipment.py} +0 -0
 - general/buffs/team.py +105 -0
 - general/gains/team.py +22 -6
 - general/skills/__init__.py +6 -0
 - general/skills/equipment.py +92 -0
 - general/skills/team.py +28 -0
 - get_assets.py +1 -3
 - parse_new_school.py +1 -1
 - qt/assets/equipments/belt +0 -0
 - qt/assets/equipments/bottoms +0 -0
 - qt/assets/equipments/hat +0 -0
 - qt/assets/equipments/jacket +0 -0
 - qt/assets/equipments/necklace +1 -1
 - qt/assets/equipments/pendant +0 -0
 - qt/assets/equipments/primary_weapon +0 -0
 - qt/assets/equipments/ring +1 -1
 - qt/assets/equipments/shoes +0 -0
 - qt/assets/equipments/tertiary_weapon +0 -0
 - qt/assets/equipments/wrist +0 -0
 - qt/components/bonuses.py +7 -1
 - qt/components/dashboard.py +8 -2
 - qt/scripts/bonuses.py +9 -2
 - qt/scripts/dashboard.py +18 -4
 - qt/scripts/top.py +5 -2
 - requirements.txt +1 -3
 - schools/__init__.py +9 -1
 - schools/bing_xin_jue/__init__.py +2 -2
 - schools/fen_shan_jing/__init__.py +10 -0
 - schools/fen_shan_jing/attribute.py +21 -0
 - schools/fen_shan_jing/buffs.py +36 -0
 - schools/fen_shan_jing/gains.py +17 -0
 - schools/fen_shan_jing/recipes.py +26 -0
 - schools/fen_shan_jing/skills.py +159 -0
 - schools/fen_shan_jing/talents.py +95 -0
 - schools/gu_feng_jue/buffs.py +1 -6
 - schools/gu_feng_jue/skills.py +5 -3
 - schools/hua_jian_you/buffs.py +6 -4
 - schools/hua_jian_you/recipes.py +3 -6
 - schools/hua_jian_you/skills.py +20 -16
 - schools/mo_wen/buffs.py +1 -1
 - schools/tai_xu_jian_yi/__init__.py +1 -1
 - schools/yi_jin_jing/__init__.py +1 -1
 - schools/yi_jin_jing/buffs.py +4 -4
 - schools/yi_jin_jing/recipes.py +3 -3
 - schools/yi_jin_jing/skills.py +16 -15
 - utils/analyzer.py +25 -16
 - utils/io.py +25 -0
 
    	
        base/buff.py
    CHANGED
    
    | 
         @@ -17,7 +17,6 @@ class Buff: 
     | 
|
| 17 | 
         
             
                frame_shift: int = 0
         
     | 
| 18 | 
         
             
                activate: bool = True
         
     | 
| 19 | 
         | 
| 20 | 
         
            -
                stackable: bool = True
         
     | 
| 21 | 
         
             
                max_stack: int = 1
         
     | 
| 22 | 
         | 
| 23 | 
         
             
                gain_skills: Dict[int, ATTR_DICT] = None
         
     | 
| 
         @@ -52,76 +51,84 @@ class Buff: 
     | 
|
| 52 | 
         
             
                def display_name(self):
         
     | 
| 53 | 
         
             
                    return f"{self.buff_name}#{self.buff_id}-{self.buff_level}-{self.buff_stack}"
         
     | 
| 54 | 
         | 
| 55 | 
         
            -
                def value(self, values):
         
     | 
| 56 | 
         
             
                    if isinstance(values, list):
         
     | 
| 57 | 
         
             
                        value = values[self.buff_level - 1]
         
     | 
| 58 | 
         
             
                    else:
         
     | 
| 59 | 
         
             
                        value = values
         
     | 
| 60 | 
         | 
| 61 | 
         
            -
                    if  
     | 
| 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. 
     | 
| 72 | 
         
             
                    for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
         
     | 
| 73 | 
         
            -
                        value = self. 
     | 
| 74 | 
         
             
                        if isinstance(value, float):
         
     | 
| 75 | 
         
            -
                            setattr(skill, attr, getattr(skill, attr) *  
     | 
| 76 | 
         
             
                        else:
         
     | 
| 77 | 
         
            -
                            setattr(skill, attr, getattr(skill, attr) +  
     | 
| 78 | 
         | 
| 79 | 
         
             
                def add_dot(self, attribute: Attribute, skill: Skill, snapshot: bool = True):
         
     | 
| 
         | 
|
| 80 | 
         
             
                    for attr, values in self.gain_attributes.items():
         
     | 
| 81 | 
         
             
                        if snapshot and any(snapshot_attr in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 82 | 
         
            -
                             
     | 
| 
         | 
|
| 83 | 
         
             
                        elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 84 | 
         
            -
                             
     | 
| 
         | 
|
| 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 | 
         
            -
                             
     | 
| 88 | 
         
             
                            if isinstance(value, float):
         
     | 
| 89 | 
         
            -
                                setattr(skill, attr, getattr(skill, attr) *  
     | 
| 90 | 
         
             
                            else:
         
     | 
| 91 | 
         
            -
                                setattr(skill, attr, getattr(skill, attr) +  
     | 
| 92 | 
         
             
                        elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 93 | 
         
            -
                             
     | 
| 94 | 
         
             
                            if isinstance(value, float):
         
     | 
| 95 | 
         
            -
                                setattr(skill, attr, getattr(skill, attr) *  
     | 
| 96 | 
         
             
                            else:
         
     | 
| 97 | 
         
            -
                                setattr(skill, attr, getattr(skill, attr) +  
     | 
| 
         | 
|
| 
         | 
|
| 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. 
     | 
| 102 | 
         
             
                    for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
         
     | 
| 103 | 
         
            -
                        value = self. 
     | 
| 104 | 
         
             
                        if isinstance(value, float):
         
     | 
| 105 | 
         
            -
                            setattr(skill, attr, getattr(skill, attr) /  
     | 
| 106 | 
         
             
                        else:
         
     | 
| 107 | 
         
            -
                            setattr(skill, attr, getattr(skill, attr) -  
     | 
| 108 | 
         | 
| 109 | 
         
             
                def sub_dot(self, attribute: Attribute, skill: Skill, snapshot: bool = True):
         
     | 
| 110 | 
         
             
                    for attr, values in self.gain_attributes.items():
         
     | 
| 111 | 
         
             
                        if snapshot and any(snapshot_attr in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 112 | 
         
            -
                            setattr(attribute, attr, getattr(attribute, attr) - self. 
     | 
| 113 | 
         
             
                        elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 114 | 
         
            -
                            setattr(attribute, attr, getattr(attribute, attr) - self. 
     | 
| 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) /  
     | 
| 120 | 
         
             
                            else:
         
     | 
| 121 | 
         
            -
                                setattr(skill, attr, getattr(skill, attr) -  
     | 
| 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) /  
     | 
| 126 | 
         
             
                            else:
         
     | 
| 127 | 
         
            -
                                setattr(skill, attr, getattr(skill, attr) -  
     | 
| 
         | 
|
| 17 | 
         
             
                frame_shift: int = 0
         
     | 
| 18 | 
         
             
                activate: bool = True
         
     | 
| 19 | 
         | 
| 
         | 
|
| 20 | 
         
             
                max_stack: int = 1
         
     | 
| 21 | 
         | 
| 22 | 
         
             
                gain_skills: Dict[int, ATTR_DICT] = None
         
     | 
| 
         | 
|
| 51 | 
         
             
                def display_name(self):
         
     | 
| 52 | 
         
             
                    return f"{self.buff_name}#{self.buff_id}-{self.buff_level}-{self.buff_stack}"
         
     | 
| 53 | 
         | 
| 54 | 
         
            +
                def value(self, values, stackable):
         
     | 
| 55 | 
         
             
                    if isinstance(values, list):
         
     | 
| 56 | 
         
             
                        value = values[self.buff_level - 1]
         
     | 
| 57 | 
         
             
                    else:
         
     | 
| 58 | 
         
             
                        value = values
         
     | 
| 59 | 
         | 
| 60 | 
         
            +
                    if stackable:
         
     | 
| 61 | 
         
             
                        value = value * self.buff_stack
         
     | 
| 62 | 
         | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 63 | 
         
             
                    return value
         
     | 
| 64 | 
         | 
| 65 | 
         
            +
                def attribute_value(self, values):
         
     | 
| 66 | 
         
            +
                    return self.value(values, True)
         
     | 
| 67 | 
         
            +
             
     | 
| 68 | 
         
            +
                def skill_value(self, values):
         
     | 
| 69 | 
         
            +
                    return self.value(values, False)
         
     | 
| 70 | 
         
            +
             
     | 
| 71 | 
         
             
                def add_all(self, attribute: Attribute, skill: Skill):
         
     | 
| 72 | 
         
             
                    for attr, values in self.gain_attributes.items():
         
     | 
| 73 | 
         
            +
                        setattr(attribute, attr, getattr(attribute, attr) + self.attribute_value(values))
         
     | 
| 74 | 
         
             
                    for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
         
     | 
| 75 | 
         
            +
                        value = self.skill_value(values)
         
     | 
| 76 | 
         
             
                        if isinstance(value, float):
         
     | 
| 77 | 
         
            +
                            setattr(skill, attr, getattr(skill, attr) * value)
         
     | 
| 78 | 
         
             
                        else:
         
     | 
| 79 | 
         
            +
                            setattr(skill, attr, getattr(skill, attr) + value)
         
     | 
| 80 | 
         | 
| 81 | 
         
             
                def add_dot(self, attribute: Attribute, skill: Skill, snapshot: bool = True):
         
     | 
| 82 | 
         
            +
                    return_tag = False
         
     | 
| 83 | 
         
             
                    for attr, values in self.gain_attributes.items():
         
     | 
| 84 | 
         
             
                        if snapshot and any(snapshot_attr in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 85 | 
         
            +
                            return_tag = True
         
     | 
| 86 | 
         
            +
                            setattr(attribute, attr, getattr(attribute, attr) + self.attribute_value(values))
         
     | 
| 87 | 
         
             
                        elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 88 | 
         
            +
                            return_tag = True
         
     | 
| 89 | 
         
            +
                            setattr(attribute, attr, getattr(attribute, attr) + self.attribute_value(values))
         
     | 
| 90 | 
         
             
                    for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
         
     | 
| 91 | 
         
            +
                        value = self.skill_value(values)
         
     | 
| 92 | 
         
             
                        if snapshot and any(snapshot_attr in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 93 | 
         
            +
                            return_tag = True
         
     | 
| 94 | 
         
             
                            if isinstance(value, float):
         
     | 
| 95 | 
         
            +
                                setattr(skill, attr, getattr(skill, attr) * value)
         
     | 
| 96 | 
         
             
                            else:
         
     | 
| 97 | 
         
            +
                                setattr(skill, attr, getattr(skill, attr) + value)
         
     | 
| 98 | 
         
             
                        elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 99 | 
         
            +
                            return_tag = True
         
     | 
| 100 | 
         
             
                            if isinstance(value, float):
         
     | 
| 101 | 
         
            +
                                setattr(skill, attr, getattr(skill, attr) * value)
         
     | 
| 102 | 
         
             
                            else:
         
     | 
| 103 | 
         
            +
                                setattr(skill, attr, getattr(skill, attr) + value)
         
     | 
| 104 | 
         
            +
             
     | 
| 105 | 
         
            +
                    return return_tag
         
     | 
| 106 | 
         | 
| 107 | 
         
             
                def sub_all(self, attribute: Attribute, skill: Skill):
         
     | 
| 108 | 
         
             
                    for attr, values in self.gain_attributes.items():
         
     | 
| 109 | 
         
            +
                        setattr(attribute, attr, getattr(attribute, attr) - self.attribute_value(values))
         
     | 
| 110 | 
         
             
                    for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
         
     | 
| 111 | 
         
            +
                        value = self.skill_value(values)
         
     | 
| 112 | 
         
             
                        if isinstance(value, float):
         
     | 
| 113 | 
         
            +
                            setattr(skill, attr, getattr(skill, attr) / value)
         
     | 
| 114 | 
         
             
                        else:
         
     | 
| 115 | 
         
            +
                            setattr(skill, attr, getattr(skill, attr) - value)
         
     | 
| 116 | 
         | 
| 117 | 
         
             
                def sub_dot(self, attribute: Attribute, skill: Skill, snapshot: bool = True):
         
     | 
| 118 | 
         
             
                    for attr, values in self.gain_attributes.items():
         
     | 
| 119 | 
         
             
                        if snapshot and any(snapshot_attr in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 120 | 
         
            +
                            setattr(attribute, attr, getattr(attribute, attr) - self.attribute_value(values))
         
     | 
| 121 | 
         
             
                        elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 122 | 
         
            +
                            setattr(attribute, attr, getattr(attribute, attr) - self.attribute_value(values))
         
     | 
| 123 | 
         
             
                    for attr, values in self.gain_skills.get(skill.skill_id, {}).items():
         
     | 
| 124 | 
         
            +
                        value = self.skill_value(values)
         
     | 
| 125 | 
         
             
                        if snapshot and any(snapshot_attr in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 
         | 
|
| 126 | 
         
             
                            if isinstance(value, float):
         
     | 
| 127 | 
         
            +
                                setattr(skill, attr, getattr(skill, attr) / value)
         
     | 
| 128 | 
         
             
                            else:
         
     | 
| 129 | 
         
            +
                                setattr(skill, attr, getattr(skill, attr) - value)
         
     | 
| 130 | 
         
             
                        elif not snapshot and all(snapshot_attr not in attr for snapshot_attr in self.SNAPSHOT_ATTRS):
         
     | 
| 
         | 
|
| 131 | 
         
             
                            if isinstance(value, float):
         
     | 
| 132 | 
         
            +
                                setattr(skill, attr, getattr(skill, attr) / value)
         
     | 
| 133 | 
         
             
                            else:
         
     | 
| 134 | 
         
            +
                                setattr(skill, attr, getattr(skill, attr) - value)
         
     | 
    	
        base/skill.py
    CHANGED
    
    | 
         @@ -171,7 +171,7 @@ class Skill: 
     | 
|
| 171 | 
         
             
                    else:
         
     | 
| 172 | 
         
             
                        self._skill_shield_gain = [skill_shield_gain]
         
     | 
| 173 | 
         | 
| 174 | 
         
            -
                def record(self,  
     | 
| 175 | 
         
             
                    pass
         
     | 
| 176 | 
         | 
| 177 | 
         
             
                def __call__(self, attribute: Attribute):
         
     | 
| 
         @@ -179,27 +179,27 @@ class Skill: 
     | 
|
| 179 | 
         | 
| 180 | 
         | 
| 181 | 
         
             
            class BuffSkill(Skill):
         
     | 
| 182 | 
         
            -
                def record(self,  
     | 
| 183 | 
         
            -
                    super().record( 
     | 
| 184 | 
         
             
                    if self.bind_buff not in parser.current_school.buffs:
         
     | 
| 185 | 
         
             
                        return
         
     | 
| 186 | 
         
            -
                     
     | 
| 187 | 
         
            -
                     
     | 
| 188 | 
         
            -
                    parser.current_hidden_buffs.pop( 
     | 
| 189 | 
         
            -
                    parser. 
     | 
| 190 | 
         
             
                    end_frame = parser.current_frame + self.duration
         
     | 
| 191 | 
         
            -
                    parser.current_hidden_buffs[ 
     | 
| 192 | 
         | 
| 193 | 
         | 
| 194 | 
         
             
            class DotSkill(Skill):
         
     | 
| 195 | 
         
            -
                def record(self,  
     | 
| 196 | 
         
            -
                    super().record( 
     | 
| 197 | 
         
             
                    bind_skill = self.bind_skill
         
     | 
| 198 | 
         
             
                    if not parser.current_ticks[bind_skill]:
         
     | 
| 199 | 
         
             
                        parser.current_stacks[bind_skill] = 0
         
     | 
| 200 | 
         
             
                    parser.current_ticks[bind_skill] = self.tick
         
     | 
| 201 | 
         
             
                    parser.current_stacks[bind_skill] = min(parser.current_stacks[bind_skill] + 1, self.max_stack)
         
     | 
| 202 | 
         
            -
                    parser. 
     | 
| 203 | 
         | 
| 204 | 
         | 
| 205 | 
         
             
            class DotConsumeSkill(Skill):
         
     | 
| 
         @@ -219,8 +219,8 @@ class DotConsumeSkill(Skill): 
     | 
|
| 219 | 
         
             
                    )
         
     | 
| 220 | 
         
             
                    parser.current_ticks[skill_id] -= tick
         
     | 
| 221 | 
         | 
| 222 | 
         
            -
                def record(self,  
     | 
| 223 | 
         
            -
                    super().record( 
     | 
| 224 | 
         
             
                    if self.last_dot:
         
     | 
| 225 | 
         
             
                        self.consume_last(parser)
         
     | 
| 226 | 
         
             
                    else:
         
     | 
| 
         @@ -228,11 +228,11 @@ class DotConsumeSkill(Skill): 
     | 
|
| 228 | 
         | 
| 229 | 
         | 
| 230 | 
         
             
            class Damage(Skill):
         
     | 
| 231 | 
         
            -
                def record(self,  
     | 
| 232 | 
         
            -
                    super().record( 
     | 
| 233 | 
         
             
                    skill_stack = parser.current_stacks[self.skill_id]
         
     | 
| 234 | 
         
            -
                    skill_tuple = (self.skill_id, skill_level, skill_stack)
         
     | 
| 235 | 
         
            -
                    status_tuple = parser. 
     | 
| 236 | 
         
             
                    parser.current_records[skill_tuple][status_tuple].append(
         
     | 
| 237 | 
         
             
                        (parser.current_frame - parser.start_frame, critical)
         
     | 
| 238 | 
         
             
                    )
         
     | 
| 
         @@ -240,21 +240,16 @@ class Damage(Skill): 
     | 
|
| 240 | 
         | 
| 241 | 
         | 
| 242 | 
         
             
            class PetDamage(Damage):
         
     | 
| 243 | 
         
            -
                 
     | 
| 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,  
     | 
| 253 | 
         
            -
                    skill_tuple, status_tuple = super().record( 
     | 
| 254 | 
         | 
| 255 | 
         
             
                    if tick := parser.current_next_dot.pop(self.skill_id, None):
         
     | 
| 256 | 
         
             
                        _, _, skill_stack = skill_tuple
         
     | 
| 257 | 
         
            -
                        parser.current_records[(self.skill_id, skill_level, skill_stack * tick)][status_tuple].append(
         
     | 
| 258 | 
         
             
                            parser.current_records[skill_tuple][status_tuple].pop()
         
     | 
| 259 | 
         
             
                        )
         
     | 
| 260 | 
         
             
                        parser.current_ticks[self.skill_id] -= tick
         
     | 
| 
         @@ -314,7 +309,7 @@ class MagicalSkill(Skill): 
     | 
|
| 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 
     | 
| 318 | 
         | 
| 319 | 
         
             
                    damage = damage_addition_result(damage, attribute.magical_damage_addition + self.skill_damage_addition)
         
     | 
| 320 | 
         
             
                    damage = overcome_result(damage, attribute.magical_overcome,
         
     | 
| 
         | 
|
| 171 | 
         
             
                    else:
         
     | 
| 172 | 
         
             
                        self._skill_shield_gain = [skill_shield_gain]
         
     | 
| 173 | 
         | 
| 174 | 
         
            +
                def record(self, critical, parser):
         
     | 
| 175 | 
         
             
                    pass
         
     | 
| 176 | 
         | 
| 177 | 
         
             
                def __call__(self, attribute: Attribute):
         
     | 
| 
         | 
|
| 179 | 
         | 
| 180 | 
         | 
| 181 | 
         
             
            class BuffSkill(Skill):
         
     | 
| 182 | 
         
            +
                def record(self, critical, parser):
         
     | 
| 183 | 
         
            +
                    super().record(critical, parser)
         
     | 
| 184 | 
         
             
                    if self.bind_buff not in parser.current_school.buffs:
         
     | 
| 185 | 
         
             
                        return
         
     | 
| 186 | 
         
            +
                    max_stack = parser.current_school.buffs[self.bind_buff].max_stack
         
     | 
| 187 | 
         
            +
                    buff = (self.bind_buff, 1)
         
     | 
| 188 | 
         
            +
                    parser.current_hidden_buffs.pop(buff, None)
         
     | 
| 189 | 
         
            +
                    parser.current_target_buffs[buff] = min(parser.current_target_buffs.get(buff, 0) + 1, max_stack)
         
     | 
| 190 | 
         
             
                    end_frame = parser.current_frame + self.duration
         
     | 
| 191 | 
         
            +
                    parser.current_hidden_buffs[buff] = end_frame
         
     | 
| 192 | 
         | 
| 193 | 
         | 
| 194 | 
         
             
            class DotSkill(Skill):
         
     | 
| 195 | 
         
            +
                def record(self, critical, parser):
         
     | 
| 196 | 
         
            +
                    super().record(critical, parser)
         
     | 
| 197 | 
         
             
                    bind_skill = self.bind_skill
         
     | 
| 198 | 
         
             
                    if not parser.current_ticks[bind_skill]:
         
     | 
| 199 | 
         
             
                        parser.current_stacks[bind_skill] = 0
         
     | 
| 200 | 
         
             
                    parser.current_ticks[bind_skill] = self.tick
         
     | 
| 201 | 
         
             
                    parser.current_stacks[bind_skill] = min(parser.current_stacks[bind_skill] + 1, self.max_stack)
         
     | 
| 202 | 
         
            +
                    parser.current_dot_snapshot[bind_skill] = parser.current_player_buffs.copy()
         
     | 
| 203 | 
         | 
| 204 | 
         | 
| 205 | 
         
             
            class DotConsumeSkill(Skill):
         
     | 
| 
         | 
|
| 219 | 
         
             
                    )
         
     | 
| 220 | 
         
             
                    parser.current_ticks[skill_id] -= tick
         
     | 
| 221 | 
         | 
| 222 | 
         
            +
                def record(self, critical, parser):
         
     | 
| 223 | 
         
            +
                    super().record(critical, parser)
         
     | 
| 224 | 
         
             
                    if self.last_dot:
         
     | 
| 225 | 
         
             
                        self.consume_last(parser)
         
     | 
| 226 | 
         
             
                    else:
         
     | 
| 
         | 
|
| 228 | 
         | 
| 229 | 
         | 
| 230 | 
         
             
            class Damage(Skill):
         
     | 
| 231 | 
         
            +
                def record(self, critical, parser):
         
     | 
| 232 | 
         
            +
                    super().record(critical, parser)
         
     | 
| 233 | 
         
             
                    skill_stack = parser.current_stacks[self.skill_id]
         
     | 
| 234 | 
         
            +
                    skill_tuple = (self.skill_id, self.skill_level, skill_stack)
         
     | 
| 235 | 
         
            +
                    status_tuple = parser.status(self.skill_id)
         
     | 
| 236 | 
         
             
                    parser.current_records[skill_tuple][status_tuple].append(
         
     | 
| 237 | 
         
             
                        (parser.current_frame - parser.start_frame, critical)
         
     | 
| 238 | 
         
             
                    )
         
     | 
| 
         | 
|
| 240 | 
         | 
| 241 | 
         | 
| 242 | 
         
             
            class PetDamage(Damage):
         
     | 
| 243 | 
         
            +
                pass
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 244 | 
         | 
| 245 | 
         | 
| 246 | 
         
             
            class DotDamage(Damage):
         
     | 
| 247 | 
         
            +
                def record(self, critical, parser):
         
     | 
| 248 | 
         
            +
                    skill_tuple, status_tuple = super().record(critical, parser)
         
     | 
| 249 | 
         | 
| 250 | 
         
             
                    if tick := parser.current_next_dot.pop(self.skill_id, None):
         
     | 
| 251 | 
         
             
                        _, _, skill_stack = skill_tuple
         
     | 
| 252 | 
         
            +
                        parser.current_records[(self.skill_id, self.skill_level, skill_stack * tick)][status_tuple].append(
         
     | 
| 253 | 
         
             
                            parser.current_records[skill_tuple][status_tuple].pop()
         
     | 
| 254 | 
         
             
                        )
         
     | 
| 255 | 
         
             
                        parser.current_ticks[self.skill_id] -= tick
         
     | 
| 
         | 
|
| 309 | 
         
             
                        self.attack_power_cof, attribute.magical_attack_power,
         
     | 
| 310 | 
         
             
                        self.weapon_damage_cof, attribute.weapon_damage,
         
     | 
| 311 | 
         
             
                        self.surplus_cof, attribute.surplus
         
     | 
| 312 | 
         
            +
                    ) * self.skill_stack * self.global_damage_factor * attribute.global_damage_factor
         
     | 
| 313 | 
         | 
| 314 | 
         
             
                    damage = damage_addition_result(damage, attribute.magical_damage_addition + self.skill_damage_addition)
         
     | 
| 315 | 
         
             
                    damage = overcome_result(damage, attribute.magical_overcome,
         
     | 
    	
        general/buffs/__init__.py
    ADDED
    
    | 
         @@ -0,0 +1,6 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from general.buffs import equipment, team
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            GENERAL_BUFFS = {
         
     | 
| 4 | 
         
            +
                **equipment.GENERAL_BUFFS,
         
     | 
| 5 | 
         
            +
                **team.GENERAL_BUFFS
         
     | 
| 6 | 
         
            +
            }
         
     | 
    	
        general/{buffs.py → buffs/equipment.py}
    RENAMED
    
    | 
         
            File without changes
         
     | 
    	
        general/buffs/team.py
    ADDED
    
    | 
         @@ -0,0 +1,105 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from base.buff import Buff
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            GENERAL_BUFFS = {
         
     | 
| 4 | 
         
            +
                20938: {
         
     | 
| 5 | 
         
            +
                    "buff_name": "左旋右转",
         
     | 
| 6 | 
         
            +
                    "gain_attributes": {
         
     | 
| 7 | 
         
            +
                        "surplus_base": 54,
         
     | 
| 8 | 
         
            +
                    }
         
     | 
| 9 | 
         
            +
                },
         
     | 
| 10 | 
         
            +
                23573: {
         
     | 
| 11 | 
         
            +
                    "buff_name": "泠风解怀",
         
     | 
| 12 | 
         
            +
                    "gain_attributes": {
         
     | 
| 13 | 
         
            +
                        "all_damage_addition": 154
         
     | 
| 14 | 
         
            +
                    }
         
     | 
| 15 | 
         
            +
                },
         
     | 
| 16 | 
         
            +
                23107: {
         
     | 
| 17 | 
         
            +
                    "buff_name": "号令三军",
         
     | 
| 18 | 
         
            +
                    "gain_attributes": {
         
     | 
| 19 | 
         
            +
                        "strain_base": 500
         
     | 
| 20 | 
         
            +
                    }
         
     | 
| 21 | 
         
            +
                },
         
     | 
| 22 | 
         
            +
                6363: {
         
     | 
| 23 | 
         
            +
                    "buff_name": "激雷",
         
     | 
| 24 | 
         
            +
                    "gain_attributes": {
         
     | 
| 25 | 
         
            +
                        "physical_attack_power_gain": 205, "physical_overcome_gain": 205
         
     | 
| 26 | 
         
            +
                    }
         
     | 
| 27 | 
         
            +
                },
         
     | 
| 28 | 
         
            +
                10208: {
         
     | 
| 29 | 
         
            +
                    "buff_name": "弘法",
         
     | 
| 30 | 
         
            +
                    "gain_attributes": {
         
     | 
| 31 | 
         
            +
                        "strain_base": 500
         
     | 
| 32 | 
         
            +
                    }
         
     | 
| 33 | 
         
            +
                },
         
     | 
| 34 | 
         
            +
                24350: {
         
     | 
| 35 | 
         
            +
                    "buff_name": "皎素",
         
     | 
| 36 | 
         
            +
                    "gain_attributes": {
         
     | 
| 37 | 
         
            +
                        "all_critical_power_gain": 51
         
     | 
| 38 | 
         
            +
                    }
         
     | 
| 39 | 
         
            +
                },
         
     | 
| 40 | 
         
            +
                24742: {
         
     | 
| 41 | 
         
            +
                    "buff_name": "仙王蛊鼎",
         
     | 
| 42 | 
         
            +
                    "gain_attributes": {
         
     | 
| 43 | 
         
            +
                        "all_damage_addition": 123
         
     | 
| 44 | 
         
            +
                    }
         
     | 
| 45 | 
         
            +
                },
         
     | 
| 46 | 
         
            +
                4246: {
         
     | 
| 47 | 
         
            +
                    "buff_name": "朝圣",
         
     | 
| 48 | 
         
            +
                    "gain_attributes": {
         
     | 
| 49 | 
         
            +
                        "strain_base": 500
         
     | 
| 50 | 
         
            +
                    }
         
     | 
| 51 | 
         
            +
                },
         
     | 
| 52 | 
         
            +
                9744: {
         
     | 
| 53 | 
         
            +
                    "buff_name": "朝圣",
         
     | 
| 54 | 
         
            +
                    "gain_attributes": {
         
     | 
| 55 | 
         
            +
                        "strain_base": 875
         
     | 
| 56 | 
         
            +
                    }
         
     | 
| 57 | 
         
            +
                },
         
     | 
| 58 | 
         
            +
                8504: {
         
     | 
| 59 | 
         
            +
                    "buff_name": "振奋",
         
     | 
| 60 | 
         
            +
                    "gain_attributes": {
         
     | 
| 61 | 
         
            +
                        "physical_overcome_base": 60,
         
     | 
| 62 | 
         
            +
                        "magical_overcome_base": 60
         
     | 
| 63 | 
         
            +
                    }
         
     | 
| 64 | 
         
            +
                },
         
     | 
| 65 | 
         
            +
                10031: {
         
     | 
| 66 | 
         
            +
                    "buff_name": "寒啸千军",
         
     | 
| 67 | 
         
            +
                    "gain_attributes": {
         
     | 
| 68 | 
         
            +
                        "physical_overcome_gain": 204,
         
     | 
| 69 | 
         
            +
                        "magical_overcome_gain": 204
         
     | 
| 70 | 
         
            +
                    }
         
     | 
| 71 | 
         
            +
                },
         
     | 
| 72 | 
         
            +
                23543: {
         
     | 
| 73 | 
         
            +
                    "buff_name": "庄周梦",
         
     | 
| 74 | 
         
            +
                    "gain_attributes": {
         
     | 
| 75 | 
         
            +
                        "strain_base": 50
         
     | 
| 76 | 
         
            +
                    }
         
     | 
| 77 | 
         
            +
                },
         
     | 
| 78 | 
         
            +
                16911: {
         
     | 
| 79 | 
         
            +
                    "buff_name": "弄梅",
         
     | 
| 80 | 
         
            +
                    "gain_attributes": {
         
     | 
| 81 | 
         
            +
                        "physical_overcome_base": 700,
         
     | 
| 82 | 
         
            +
                        "magical_overcome_base": 700,
         
     | 
| 83 | 
         
            +
                        "all_shield_ignore": 205
         
     | 
| 84 | 
         
            +
                    }
         
     | 
| 85 | 
         
            +
                },
         
     | 
| 86 | 
         
            +
                11456: {
         
     | 
| 87 | 
         
            +
                    "buff_name": "疏狂",
         
     | 
| 88 | 
         
            +
                    "gain_attributes": {
         
     | 
| 89 | 
         
            +
                        "physical_attack_power_gain": 307,
         
     | 
| 90 | 
         
            +
                        "magical_attack_power_gain": 307
         
     | 
| 91 | 
         
            +
                    }
         
     | 
| 92 | 
         
            +
                },
         
     | 
| 93 | 
         
            +
                20877: {
         
     | 
| 94 | 
         
            +
                    "buff_name": "配伍",
         
     | 
| 95 | 
         
            +
                    "gain_attributes": {
         
     | 
| 96 | 
         
            +
                        "all_major_gain": 10
         
     | 
| 97 | 
         
            +
                    }
         
     | 
| 98 | 
         
            +
                }
         
     | 
| 99 | 
         
            +
            }
         
     | 
| 100 | 
         
            +
             
     | 
| 101 | 
         
            +
            for buff_id, detail in GENERAL_BUFFS.items():
         
     | 
| 102 | 
         
            +
                GENERAL_BUFFS[buff_id] = Buff(buff_id)
         
     | 
| 103 | 
         
            +
                GENERAL_BUFFS[buff_id].activate = False
         
     | 
| 104 | 
         
            +
                for attr, value in detail.items():
         
     | 
| 105 | 
         
            +
                    setattr(GENERAL_BUFFS[buff_id], attr, value)
         
     | 
    	
        general/gains/team.py
    CHANGED
    
    | 
         @@ -1,5 +1,21 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 1 | 
         
             
            from base.attribute import Attribute
         
     | 
| 
         | 
|
| 2 | 
         
             
            from base.gain import Gain
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 3 | 
         | 
| 4 | 
         | 
| 5 | 
         
             
            class TeamGain(Gain):
         
     | 
| 
         @@ -55,7 +71,7 @@ class 乘龙箭(TeamGain): 
     | 
|
| 55 | 
         | 
| 56 | 
         | 
| 57 | 
         
             
            class 号令三军(TeamGain):
         
     | 
| 58 | 
         
            -
                gain_attributes = {"strain_base": ( 
     | 
| 59 | 
         | 
| 60 | 
         | 
| 61 | 
         
             
            class 激雷(TeamGain):
         
     | 
| 
         @@ -70,7 +86,7 @@ class 立地成佛(TeamGain): 
     | 
|
| 70 | 
         | 
| 71 | 
         | 
| 72 | 
         
             
            class 舍身弘法(TeamGain):
         
     | 
| 73 | 
         
            -
                gain_attributes = {"strain_base":  
     | 
| 74 | 
         | 
| 75 | 
         | 
| 76 | 
         
             
            """ 万花 """
         
     | 
| 
         @@ -117,8 +133,8 @@ class 戒火(TeamGain): 
     | 
|
| 117 | 
         | 
| 118 | 
         | 
| 119 | 
         
             
            class 朝圣言(TeamGain):
         
     | 
| 120 | 
         
            -
                gain_attributes = {"strain_base":  
     | 
| 121 | 
         
            -
                variety_values = {"圣浴明心":  
     | 
| 122 | 
         | 
| 123 | 
         | 
| 124 | 
         
             
            """ 丐帮 """
         
     | 
| 
         @@ -186,10 +202,10 @@ TEAM_GAIN_LIMIT = { 
     | 
|
| 186 | 
         
             
                    "stack": 24
         
     | 
| 187 | 
         
             
                },
         
     | 
| 188 | 
         
             
                "振奋": {
         
     | 
| 189 | 
         
            -
                    "stack":  
     | 
| 190 | 
         
             
                },
         
     | 
| 191 | 
         
             
                "庄周梦": {
         
     | 
| 192 | 
         
            -
                    "stack":  
     | 
| 193 | 
         
             
                }
         
     | 
| 194 | 
         
             
            }
         
     | 
| 195 | 
         
             
            TEAM_GAINS = {
         
     | 
| 
         | 
|
| 1 | 
         
            +
            from typing import Dict
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
             
            from base.attribute import Attribute
         
     | 
| 4 | 
         
            +
            from base.buff import Buff
         
     | 
| 5 | 
         
             
            from base.gain import Gain
         
     | 
| 6 | 
         
            +
            from general.buffs.team import GENERAL_BUFFS
         
     | 
| 7 | 
         
            +
             
     | 
| 8 | 
         
            +
             
     | 
| 9 | 
         
            +
            class RealTeamGain(Gain):
         
     | 
| 10 | 
         
            +
                buff_ids = list(GENERAL_BUFFS)
         
     | 
| 11 | 
         
            +
             
     | 
| 12 | 
         
            +
                def add_buffs(self, buffs: Dict[int, Buff]):
         
     | 
| 13 | 
         
            +
                    for buff_id in self.buff_ids:
         
     | 
| 14 | 
         
            +
                        buffs[buff_id].activate = True
         
     | 
| 15 | 
         
            +
             
     | 
| 16 | 
         
            +
                def sub_buffs(self, buffs: Dict[int, Buff]):
         
     | 
| 17 | 
         
            +
                    for buff_id in self.buff_ids:
         
     | 
| 18 | 
         
            +
                        buffs[buff_id].activate = False
         
     | 
| 19 | 
         | 
| 20 | 
         | 
| 21 | 
         
             
            class TeamGain(Gain):
         
     | 
| 
         | 
|
| 71 | 
         | 
| 72 | 
         | 
| 73 | 
         
             
            class 号令三军(TeamGain):
         
     | 
| 74 | 
         
            +
                gain_attributes = {"strain_base": (500 + 500 / 2) / 2}
         
     | 
| 75 | 
         | 
| 76 | 
         | 
| 77 | 
         
             
            class 激雷(TeamGain):
         
     | 
| 
         | 
|
| 86 | 
         | 
| 87 | 
         | 
| 88 | 
         
             
            class 舍身弘法(TeamGain):
         
     | 
| 89 | 
         
            +
                gain_attributes = {"strain_base": 500}
         
     | 
| 90 | 
         | 
| 91 | 
         | 
| 92 | 
         
             
            """ 万花 """
         
     | 
| 
         | 
|
| 133 | 
         | 
| 134 | 
         | 
| 135 | 
         
             
            class 朝圣言(TeamGain):
         
     | 
| 136 | 
         
            +
                gain_attributes = {"strain_base": 500}
         
     | 
| 137 | 
         
            +
                variety_values = {"圣浴明心": 875 - 500}
         
     | 
| 138 | 
         | 
| 139 | 
         | 
| 140 | 
         
             
            """ 丐帮 """
         
     | 
| 
         | 
|
| 202 | 
         
             
                    "stack": 24
         
     | 
| 203 | 
         
             
                },
         
     | 
| 204 | 
         
             
                "振奋": {
         
     | 
| 205 | 
         
            +
                    "stack": 125
         
     | 
| 206 | 
         
             
                },
         
     | 
| 207 | 
         
             
                "庄周梦": {
         
     | 
| 208 | 
         
            +
                    "stack": 200
         
     | 
| 209 | 
         
             
                }
         
     | 
| 210 | 
         
             
            }
         
     | 
| 211 | 
         
             
            TEAM_GAINS = {
         
     | 
    	
        general/skills/__init__.py
    ADDED
    
    | 
         @@ -0,0 +1,6 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from general.skills import equipment, team
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            GENERAL_SKILLS = {
         
     | 
| 4 | 
         
            +
                **equipment.GENERAL_SKILLS,
         
     | 
| 5 | 
         
            +
                **team.GENERAL_SKILLS
         
     | 
| 6 | 
         
            +
            }
         
     | 
    	
        general/skills/equipment.py
    ADDED
    
    | 
         @@ -0,0 +1,92 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from typing import Dict
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            from base.skill import PhysicalDamage, MagicalDamage, Skill, PureDamage
         
     | 
| 4 | 
         
            +
             
     | 
| 5 | 
         
            +
            GENERAL_SKILLS: Dict[int, Skill | dict] = {
         
     | 
| 6 | 
         
            +
                22160: {
         
     | 
| 7 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 8 | 
         
            +
                    "skill_name": "昆吾·弦刃",
         
     | 
| 9 | 
         
            +
                    "damage_base": 40,
         
     | 
| 10 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 11 | 
         
            +
                    "attack_power_cof": 75
         
     | 
| 12 | 
         
            +
                },
         
     | 
| 13 | 
         
            +
                22161: {
         
     | 
| 14 | 
         
            +
                    "skill_class": MagicalDamage,
         
     | 
| 15 | 
         
            +
                    "skill_name": "昆吾·弦刃",
         
     | 
| 16 | 
         
            +
                    "damage_base": 40,
         
     | 
| 17 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 18 | 
         
            +
                    "attack_power_cof": 90
         
     | 
| 19 | 
         
            +
                },
         
     | 
| 20 | 
         
            +
                22162: {
         
     | 
| 21 | 
         
            +
                    "skill_class": MagicalDamage,
         
     | 
| 22 | 
         
            +
                    "skill_name": "昆吾·弦刃",
         
     | 
| 23 | 
         
            +
                    "damage_base": 40,
         
     | 
| 24 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 25 | 
         
            +
                    "attack_power_cof": 90
         
     | 
| 26 | 
         
            +
                },
         
     | 
| 27 | 
         
            +
                22163: {
         
     | 
| 28 | 
         
            +
                    "skill_class": MagicalDamage,
         
     | 
| 29 | 
         
            +
                    "skill_name": "昆吾·弦刃",
         
     | 
| 30 | 
         
            +
                    "damage_base": 40,
         
     | 
| 31 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 32 | 
         
            +
                    "attack_power_cof": 90
         
     | 
| 33 | 
         
            +
                },
         
     | 
| 34 | 
         
            +
                22164: {
         
     | 
| 35 | 
         
            +
                    "skill_class": MagicalDamage,
         
     | 
| 36 | 
         
            +
                    "skill_name": "昆吾·弦刃",
         
     | 
| 37 | 
         
            +
                    "damage_base": 40,
         
     | 
| 38 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 39 | 
         
            +
                    "attack_power_cof": 90
         
     | 
| 40 | 
         
            +
                },
         
     | 
| 41 | 
         
            +
                33257: {
         
     | 
| 42 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 43 | 
         
            +
                    "skill_name": "刃凌",
         
     | 
| 44 | 
         
            +
                    "damage_base": 40,
         
     | 
| 45 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 46 | 
         
            +
                    "attack_power_cof": [60, 100, 60, 100, 100]
         
     | 
| 47 | 
         
            +
                },
         
     | 
| 48 | 
         
            +
                33258: {
         
     | 
| 49 | 
         
            +
                    "skill_class": MagicalDamage,
         
     | 
| 50 | 
         
            +
                    "skill_name": "刃凌",
         
     | 
| 51 | 
         
            +
                    "damage_base": 40,
         
     | 
| 52 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 53 | 
         
            +
                    "attack_power_cof": [50, 100]
         
     | 
| 54 | 
         
            +
                },
         
     | 
| 55 | 
         
            +
                33259: {
         
     | 
| 56 | 
         
            +
                    "skill_class": MagicalDamage,
         
     | 
| 57 | 
         
            +
                    "skill_name": "刃凌",
         
     | 
| 58 | 
         
            +
                    "damage_base": 40,
         
     | 
| 59 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 60 | 
         
            +
                    "attack_power_cof": [50, 100]
         
     | 
| 61 | 
         
            +
                },
         
     | 
| 62 | 
         
            +
                33260: {
         
     | 
| 63 | 
         
            +
                    "skill_class": MagicalDamage,
         
     | 
| 64 | 
         
            +
                    "skill_name": "刃凌",
         
     | 
| 65 | 
         
            +
                    "damage_base": 40,
         
     | 
| 66 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 67 | 
         
            +
                    "attack_power_cof": [50, 100]
         
     | 
| 68 | 
         
            +
                },
         
     | 
| 69 | 
         
            +
                33261: {
         
     | 
| 70 | 
         
            +
                    "skill_class": MagicalDamage,
         
     | 
| 71 | 
         
            +
                    "skill_name": "刃凌",
         
     | 
| 72 | 
         
            +
                    "damage_base": 40,
         
     | 
| 73 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 74 | 
         
            +
                    "attack_power_cof": [50, 100]
         
     | 
| 75 | 
         
            +
                },
         
     | 
| 76 | 
         
            +
                37562: {
         
     | 
| 77 | 
         
            +
                    "skill_class": PureDamage,
         
     | 
| 78 | 
         
            +
                    "skill_name": "昆吾·弦刃",
         
     | 
| 79 | 
         
            +
                    "damage_base": 145300
         
     | 
| 80 | 
         
            +
                },
         
     | 
| 81 | 
         
            +
                37561: {
         
     | 
| 82 | 
         
            +
                    "skill_class": PureDamage,
         
     | 
| 83 | 
         
            +
                    "skill_name": "刃凌",
         
     | 
| 84 | 
         
            +
                    "damage_base": 96900,
         
     | 
| 85 | 
         
            +
                },
         
     | 
| 86 | 
         
            +
            }
         
     | 
| 87 | 
         
            +
             
     | 
| 88 | 
         
            +
            for skill_id, detail in GENERAL_SKILLS.items():
         
     | 
| 89 | 
         
            +
                GENERAL_SKILLS[skill_id] = detail.pop('skill_class')(skill_id)
         
     | 
| 90 | 
         
            +
                GENERAL_SKILLS[skill_id].activate = False
         
     | 
| 91 | 
         
            +
                for attr, value in detail.items():
         
     | 
| 92 | 
         
            +
                    setattr(GENERAL_SKILLS[skill_id], attr, value)
         
     | 
    	
        general/skills/team.py
    ADDED
    
    | 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from typing import Dict
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            from base.skill import PhysicalDamage, MagicalDamage, Skill, PureDamage
         
     | 
| 4 | 
         
            +
             
     | 
| 5 | 
         
            +
            GENERAL_SKILLS: Dict[int, Skill | dict] = {
         
     | 
| 6 | 
         
            +
                29535: {
         
     | 
| 7 | 
         
            +
                    "skill_class": MagicalDamage,
         
     | 
| 8 | 
         
            +
                    "skill_name": "逐云寒蕊",
         
     | 
| 9 | 
         
            +
                    "damage_base": 40,
         
     | 
| 10 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 11 | 
         
            +
                    "attack_power_cof": [90, 200 * 1.2],
         
     | 
| 12 | 
         
            +
                    "skill_shield_gain": -1024
         
     | 
| 13 | 
         
            +
                },
         
     | 
| 14 | 
         
            +
                29536: {
         
     | 
| 15 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 16 | 
         
            +
                    "skill_name": "逐云寒蕊",
         
     | 
| 17 | 
         
            +
                    "damage_base": 40,
         
     | 
| 18 | 
         
            +
                    "damage_rand": 17,
         
     | 
| 19 | 
         
            +
                    "attack_power_cof": [90, 200 * 1.2],
         
     | 
| 20 | 
         
            +
                    "skill_shield_gain": -1024
         
     | 
| 21 | 
         
            +
                }
         
     | 
| 22 | 
         
            +
            }
         
     | 
| 23 | 
         
            +
             
     | 
| 24 | 
         
            +
            for skill_id, detail in GENERAL_SKILLS.items():
         
     | 
| 25 | 
         
            +
                GENERAL_SKILLS[skill_id] = detail.pop('skill_class')(skill_id)
         
     | 
| 26 | 
         
            +
                GENERAL_SKILLS[skill_id].activate = False
         
     | 
| 27 | 
         
            +
                for attr, value in detail.items():
         
     | 
| 28 | 
         
            +
                    setattr(GENERAL_SKILLS[skill_id], attr, value)
         
     | 
    	
        get_assets.py
    CHANGED
    
    | 
         @@ -180,11 +180,9 @@ def get_secondary_weapons(): 
     | 
|
| 180 | 
         | 
| 181 | 
         
             
            def get_equip_name(row):
         
     | 
| 182 | 
         
             
                name = row['Name']
         
     | 
| 183 | 
         
            -
                if "无封" in name:
         
     | 
| 184 | 
         
            -
                    name = f"{row['MagicKind']}{name}"
         
     | 
| 185 | 
         
             
                attrs = " ".join([EQUIP_ATTR_MAP[attr] for attr in EQUIP_ATTR_MAP if attr in row['_Attrs']])
         
     | 
| 186 | 
         
             
                level = row['Level']
         
     | 
| 187 | 
         
            -
                return f"{name} 
     | 
| 188 | 
         | 
| 189 | 
         | 
| 190 | 
         
             
            def get_equip_detail(row):
         
     | 
| 
         | 
|
| 180 | 
         | 
| 181 | 
         
             
            def get_equip_name(row):
         
     | 
| 182 | 
         
             
                name = row['Name']
         
     | 
| 
         | 
|
| 
         | 
|
| 183 | 
         
             
                attrs = " ".join([EQUIP_ATTR_MAP[attr] for attr in EQUIP_ATTR_MAP if attr in row['_Attrs']])
         
     | 
| 184 | 
         
             
                level = row['Level']
         
     | 
| 185 | 
         
            +
                return f"{name}#{row['ID']}({attrs}) {level}"
         
     | 
| 186 | 
         | 
| 187 | 
         | 
| 188 | 
         
             
            def get_equip_detail(row):
         
     | 
    	
        parse_new_school.py
    CHANGED
    
    | 
         @@ -59,4 +59,4 @@ class Parser: 
     | 
|
| 59 | 
         | 
| 60 | 
         
             
            if __name__ == '__main__':
         
     | 
| 61 | 
         
             
                parser = Parser()
         
     | 
| 62 | 
         
            -
                parser(r" 
     | 
| 
         | 
|
| 59 | 
         | 
| 60 | 
         
             
            if __name__ == '__main__':
         
     | 
| 61 | 
         
             
                parser = Parser()
         
     | 
| 62 | 
         
            +
                parser(r"new.jcl")
         
     | 
    	
        qt/assets/equipments/belt
    CHANGED
    
    | 
         The diff for this file is too large to render. 
		See raw diff 
     | 
| 
         | 
    	
        qt/assets/equipments/bottoms
    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/necklace
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 1 | 
         
            -
            {"无者链 (破防 破招) 15800": {"id": 39909, "school": "通用", "kind": "身法", "level": 15800, "max_strength": 6, "base": {}, "magic": {"agility_base": 552, "physical_attack_power_base": 895, "physical_overcome_base": 2768, "surplus_base": 2460}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "运上链 (破防 破招) 15800": {"id": 39908, "school": "通用", "kind": "力道", "level": 15800, "max_strength": 6, "base": {}, "magic": {"strength_base": 552, "physical_attack_power_base": 895, "physical_overcome_base": 2768, "surplus_base": 2460}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "爪动链 (破防 破招) 15800": {"id": 39907, "school": "通用", "kind": "元气", "level": 15800, "max_strength": 6, "base": {}, "magic": {"spunk_base": 552, "magical_attack_power_base": 1074, "magical_overcome_base": 2768, "surplus_base": 2460}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "文通链 (破防 破招) 15800": {"id": 39906, "school": "通用", "kind": "根骨", "level": 15800, "max_strength": 6, "base": {}, "magic": {"spirit_base": 552, "magical_attack_power_base": 1074, "magical_overcome_base": 2768, "surplus_base": 2460}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "救困链 (会心 无双) 15600": {"id": 39837, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "磊落链 (会心 无双) 15600": {"id": 39836, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "良安链 (会心 无双) 15600": {"id": 39835, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "情义链 (会心 无双) 15600": {"id": 39834, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "照耀链 (破防 无双) 15600": {"id": 39819, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "如雪链 (破防 无双) 15600": {"id": 39818, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "宫阙链 (破防 无双) 15600": {"id": 39817, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "绕城链 (破防 无双) 15600": {"id": 39816, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (破防 破招 无双) 15200": {"id": 39941, "school": "精简", "kind": "外功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1920, "surplus_base": 2071, "physical_overcome_base": 2515, "strain_base": 1479}, "embed": {"physical_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (会心 破招) 15200": {"id": 39940, "school": "精简", "kind": "外功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1920, "surplus_base": 3107, "physical_critical_strike_base": 2959}, "embed": {"physical_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (破防) 15200": {"id": 39939, "school": "精简", "kind": "外功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 2252, "physical_overcome_base": 5252}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (破防 破招 无双) 15200": {"id": 39938, "school": "精简", "kind": "内功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2305, "surplus_base": 2071, "magical_overcome_base": 2515, "strain_base": 1479}, "embed": {"all_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (会心 破招) 15200": {"id": 39937, "school": "精简", "kind": "内功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2305, "surplus_base": 3107, "all_critical_strike_base": 2959}, "embed": {"all_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (破防) 15200": {"id": 39936, "school": "精简", "kind": "内功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2702, "magical_overcome_base": 5252}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无者链 (破防 破招) 14800": {"id": 39897, "school": "通用", "kind": "身法", "level": 14800, "max_strength": 6, "base": {}, "magic": {"agility_base": 517, "physical_attack_power_base": 838, "physical_overcome_base": 2593, "surplus_base": 2305}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "运上链 (破防 破招) 14800": {"id": 39896, "school": "通用", "kind": "力道", "level": 14800, "max_strength": 6, "base": {}, "magic": {"strength_base": 517, "physical_attack_power_base": 838, "physical_overcome_base": 2593, "surplus_base": 2305}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "爪动链 (破防 破招) 14800": {"id": 39895, "school": "通用", "kind": "元气", "level": 14800, "max_strength": 6, "base": {}, "magic": {"spunk_base": 517, "magical_attack_power_base": 1006, "magical_overcome_base": 2593, "surplus_base": 2305}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "文通链 (破防 破招) 14800": {"id": 39894, "school": "通用", "kind": "根骨", "level": 14800, "max_strength": 6, "base": {}, "magic": {"spirit_base": 517, "magical_attack_power_base": 1006, "magical_overcome_base": 2593, "surplus_base": 2305}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (会心 会效 破招) 14350": {"id": 39929, "school": "精简", "kind": "外功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1813, "surplus_base": 1536, "physical_critical_strike_base": 2654, "physical_critical_power_base": 1397}, "embed": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (破招 无双) 14350": {"id": 39928, "school": "精简", "kind": "外功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1813, "surplus_base": 2863, "strain_base": 2863}, "embed": {"physical_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (会心) 14350": {"id": 39927, "school": "精简", "kind": "外功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 2126, "physical_critical_strike_base": 4958}, "embed": {"physical_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (会心 会效 破招) 14350": {"id": 39926, "school": "精简", "kind": "内功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2176, "surplus_base": 1536, "all_critical_strike_base": 2654, "all_critical_power_base": 1397}, "embed": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (破招 无双) 14350": {"id": 39925, "school": "精简", "kind": "内功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2176, "surplus_base": 2863, "strain_base": 2863}, "embed": {"all_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (会心) 14350": {"id": 39924, "school": "精简", "kind": "内功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2551, "all_critical_strike_base": 4958}, "embed": {"all_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "逢杨链 (破防 破招) 14150": {"id": 38845, "school": "通用", "kind": "身法", "level": 14150, "max_strength": 6, "base": {}, "magic": {"agility_base": 494, "physical_attack_power_base": 801, "physical_overcome_base": 2479, "surplus_base": 2203}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客路链 (破防 破招) 14150": {"id": 38844, "school": "通用", "kind": "力道", "level": 14150, "max_strength": 6, "base": {}, "magic": {"strength_base": 494, "physical_attack_power_base": 801, "physical_overcome_base": 2479, "surplus_base": 2203}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "日倾链 (破防 破招) 14150": {"id": 38843, "school": "通用", "kind": "元气", "level": 14150, "max_strength": 6, "base": {}, "magic": {"spunk_base": 494, "magical_attack_power_base": 962, "magical_overcome_base": 2479, "surplus_base": 2203}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "寒霖链 (破防 破招) 14150": {"id": 38842, "school": "通用", "kind": "根骨", "level": 14150, "max_strength": 6, "base": {}, "magic": {"spirit_base": 494, "magical_attack_power_base": 962, "magical_overcome_base": 2479, "surplus_base": 2203}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "危光链 (破防 无双) 13950": {"id": 39807, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "危雨链 (破防 无双) 13950": {"id": 39806, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "危影链 (破防 无双) 13950": {"id": 39805, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "危音链 (破防 无双) 13950": {"id": 39804, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "踏雁链 (会心 无双) 13950": {"id": 38773, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "素鸦链 (会心 无双) 13950": {"id": 38772, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "壑云链 (会心 无双) 13950": {"id": 38771, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "寒绡链 (会心 无双) 13950": {"id": 38770, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "风掣链 (破防 无双) 13950": {"id": 38755, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "凛行链 (破防 无双) 13950": {"id": 38754, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "开颐链 (破防 无双) 13950": {"id": 38753, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "扬英链 (破防 无双) 13950": {"id": 38752, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无者链 (破防 破招) 13800": {"id": 39885, "school": "通用", "kind": "身法", "level": 13800, "max_strength": 6, "base": {}, "magic": {"agility_base": 482, "physical_attack_power_base": 782, "physical_overcome_base": 2417, "surplus_base": 2149}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "运上链 (破防 破招) 13800": {"id": 39884, "school": "通用", "kind": "力道", "level": 13800, "max_strength": 6, "base": {}, "magic": {"strength_base": 482, "physical_attack_power_base": 782, "physical_overcome_base": 2417, "surplus_base": 2149}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "爪动链 (破防 破招) 13800": {"id": 39883, "school": "通用", "kind": "元气", "level": 13800, "max_strength": 6, "base": {}, "magic": {"spunk_base": 482, "magical_attack_power_base": 938, "magical_overcome_base": 2417, "surplus_base": 2149}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "文通链 (破防 破招) 13800": {"id": 39882, "school": "通用", "kind": "根骨", "level": 13800, "max_strength": 6, "base": {}, "magic": {"spirit_base": 482, "magical_attack_power_base": 938, "magical_overcome_base": 2417, "surplus_base": 2149}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (会心 破招 无双) 13550": {"id": 38881, "school": "精简", "kind": "外功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1712, "surplus_base": 1451, "physical_critical_strike_base": 2506, "strain_base": 1451}, "embed": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (破防 无双) 13550": {"id": 38880, "school": "精简", "kind": "外功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1712, "physical_overcome_base": 2637, "strain_base": 2769}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (无双) 13550": {"id": 38879, "school": "精简", "kind": "外功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 2007, "strain_base": 4681}, "embed": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (会心 破招 无双) 13550": {"id": 38878, "school": "精简", "kind": "内功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2054, "surplus_base": 1451, "all_critical_strike_base": 2506, "strain_base": 1451}, "embed": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (破防 无双) 13550": {"id": 38877, "school": "精简", "kind": "内功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2054, "magical_overcome_base": 2637, "strain_base": 2769}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (无双) 13550": {"id": 38876, "school": "精简", "kind": "内功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2409, "strain_base": 4681}, "embed": {"all_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "逢杨链 (破防 破招) 13300": {"id": 38833, "school": "通用", "kind": "身法", "level": 13300, "max_strength": 6, "base": {}, "magic": {"agility_base": 464, "physical_attack_power_base": 753, "physical_overcome_base": 2330, "surplus_base": 2071}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客路链 (破防 破招) 13300": {"id": 38832, "school": "通用", "kind": "力道", "level": 13300, "max_strength": 6, "base": {}, "magic": {"strength_base": 464, "physical_attack_power_base": 753, "physical_overcome_base": 2330, "surplus_base": 2071}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "日倾链 (破防 破招) 13300": {"id": 38831, "school": "通用", "kind": "元气", "level": 13300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 464, "magical_attack_power_base": 904, "magical_overcome_base": 2330, "surplus_base": 2071}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "寒霖链 (破防 破招) 13300": {"id": 38830, "school": "通用", "kind": "根骨", "level": 13300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 464, "magical_attack_power_base": 904, "magical_overcome_base": 2330, "surplus_base": 2071}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无者链 (破防 破招) 12800": {"id": 39873, "school": "通用", "kind": "身法", "level": 12800, "max_strength": 6, "base": {}, "magic": {"agility_base": 447, "physical_attack_power_base": 725, "physical_overcome_base": 2242, "surplus_base": 1993}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "运上链 (破防 破招) 12800": {"id": 39872, "school": "通用", "kind": "力道", "level": 12800, "max_strength": 6, "base": {}, "magic": {"strength_base": 447, "physical_attack_power_base": 725, "physical_overcome_base": 2242, "surplus_base": 1993}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "爪动链 (破防 破招) 12800": {"id": 39871, "school": "通用", "kind": "元气", "level": 12800, "max_strength": 6, "base": {}, "magic": {"spunk_base": 447, "magical_attack_power_base": 870, "magical_overcome_base": 2242, "surplus_base": 1993}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "文通链 (破防 破招) 12800": {"id": 39870, "school": "通用", "kind": "根骨", "level": 12800, "max_strength": 6, "base": {}, "magic": {"spirit_base": 447, "magical_attack_power_base": 870, "magical_overcome_base": 2242, "surplus_base": 1993}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (破防 破招 无双) 12800": {"id": 38865, "school": "精简", "kind": "外功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1617, "surplus_base": 1744, "physical_overcome_base": 2118, "strain_base": 1246}, "embed": {"physical_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (会心 破招) 12800": {"id": 38864, "school": "精简", "kind": "外功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1617, "surplus_base": 2616, "physical_critical_strike_base": 2491}, "embed": {"physical_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (破防) 12800": {"id": 38863, "school": "精简", "kind": "外功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1896, "physical_overcome_base": 4422}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (破防 破招 无双) 12800": {"id": 38862, "school": "精简", "kind": "内功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 1941, "surplus_base": 1744, "magical_overcome_base": 2118, "strain_base": 1246}, "embed": {"all_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (会心 破招) 12800": {"id": 38861, "school": "精简", "kind": "内功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 1941, "surplus_base": 2616, "all_critical_strike_base": 2491}, "embed": {"all_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (破防) 12800": {"id": 38860, "school": "精简", "kind": "内功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2275, "magical_overcome_base": 4422}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "欺林链 (破防 破招) 12600": {"id": 37770, "school": "通用", "kind": "身法", "level": 12600, "max_strength": 6, "base": {}, "magic": {"agility_base": 440, "physical_attack_power_base": 714, "physical_overcome_base": 2207, "surplus_base": 1962}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "定酣链 (破防 破招) 12600": {"id": 37769, "school": "通用", "kind": "力道", "level": 12600, "max_strength": 6, "base": {}, "magic": {"strength_base": 440, "physical_attack_power_base": 714, "physical_overcome_base": 2207, "surplus_base": 1962}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "畅光链 (破防 破招) 12600": {"id": 37768, "school": "通用", "kind": "元气", "level": 12600, "max_strength": 6, "base": {}, "magic": {"spunk_base": 440, "magical_attack_power_base": 856, "magical_overcome_base": 2207, "surplus_base": 1962}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "游零链 (破防 破招) 12600": {"id": 37767, "school": "通用", "kind": "根骨", "level": 12600, "max_strength": 6, "base": {}, "magic": {"spirit_base": 440, "magical_attack_power_base": 856, "magical_overcome_base": 2207, "surplus_base": 1962}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "灵空·风行链 (破防 无双) 12450": {"id": 39683, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "灵空·撼地链 (破防 无双) 12450": {"id": 39682, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "灵空·未判链 (破防 无双) 12450": {"id": 39681, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "灵空·心斋链 (破防 无双) 12450": {"id": 39680, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "逢杨链 (破防 破招) 12450": {"id": 38821, "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": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客路链 (破防 破招) 12450": {"id": 38820, "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": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "日倾链 (破防 破招) 12450": {"id": 38819, "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": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "寒霖链 (破防 破招) 12450": {"id": 38818, "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": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖月链 (会心 破招) 12450": {"id": 37812, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖静链 (会心 破招) 12450": {"id": 37811, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖烟链 (会心 破招) 12450": {"id": 37810, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖寂链 (会心 破招) 12450": {"id": 37809, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "染辞链 (会心 无双) 12450": {"id": 37702, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "温刃链 (会心 无双) 12450": {"id": 37701, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "沁渡链 (会心 无双) 12450": {"id": 37700, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "朝华链 (会心 无双) 12450": {"id": 37699, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "商野链 (破防 无双) 12450": {"id": 37684, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "安衿链 (破防 无双) 12450": {"id": 37683, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "椴微链 (破防 无双) 12450": {"id": 37682, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "池泓链 (破防 无双) 12450": {"id": 37681, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临越链 (破防 破招) 12400": {"id": 34190, "school": "通用", "kind": "身法", "level": 12400, "max_strength": 6, "base": {}, "magic": {"agility_base": 433, "physical_attack_power_base": 702, "physical_overcome_base": 2172, "surplus_base": 1931}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临邦链 (破防 破招) 12400": {"id": 34189, "school": "通用", "kind": "力道", "level": 12400, "max_strength": 6, "base": {}, "magic": {"strength_base": 433, "physical_attack_power_base": 702, "physical_overcome_base": 2172, "surplus_base": 1931}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临溪链 (破防 破招) 12400": {"id": 34188, "school": "通用", "kind": "元气", "level": 12400, "max_strength": 6, "base": {}, "magic": {"spunk_base": 433, "magical_attack_power_base": 843, "magical_overcome_base": 2172, "surplus_base": 1931}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临黎链 (破防 破招) 12400": {"id": 34187, "school": "通用", "kind": "根骨", "level": 12400, "max_strength": 6, "base": {}, "magic": {"spirit_base": 433, "magical_attack_power_base": 843, "magical_overcome_base": 2172, "surplus_base": 1931}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "久念链 (会心 破招) 12300": {"id": 34262, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "拭江链 (会心 破招) 12300": {"id": 34261, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "藏峦链 (会心 破招) 12300": {"id": 34260, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "谨峰链 (会心 破招) 12300": {"id": 34259, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "风岱链 (会心 无双) 12300": {"id": 34244, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "项昌链 (会心 无双) 12300": {"id": 34243, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "故芳链 (会心 无双) 12300": {"id": 34242, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "all_critical_strike_base": 2155, "strain_base": 1915}, "embed": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "剪桐链 (会心 无双) 12300": {"id": 34241, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "北邱链 (破防 破招) 12300": {"id": 34226, "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": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "曲郦链 (破防 破招) 12300": {"id": 34225, "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": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "花霭链 (破防 破招) 12300": {"id": 34224, "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": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "途南链 (破防 破招) 12300": {"id": 34223, "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": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "渊忱链 (加速 无双) 12300": {"id": 34208, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "羡双链 (加速 无双) 12300": {"id": 34207, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "庭澜链 (加速 无双) 12300": {"id": 34206, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "故云链 (加速 无双) 12300": {"id": 34205, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆宁链 (破防 无双) 12300": {"id": 34118, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆敬链 (破防 无双) 12300": {"id": 34117, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆惜链 (破防 无双) 12300": {"id": 34116, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆安链 (破防 无双) 12300": {"id": 34115, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "盈绝链 (会心 破招) 12300": {"id": 34100, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "垣翰链 (会心 破招) 12300": {"id": 34099, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "语阔链 (会心 破招) 12300": {"id": 34098, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "擒雨链 (会心 破招) 12300": {"id": 34097, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "潋阳链 (破招 无双) 12300": {"id": 34082, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "surplus_base": 2155, "strain_base": 1915}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "重关链 (破招 无双) 12300": {"id": 34081, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "surplus_base": 2155, "strain_base": 1915}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "烟琐链 (破招 无双) 12300": {"id": 34080, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "surplus_base": 2155, "strain_base": 1915}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "德襄链 (破招 无双) 12300": {"id": 34079, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "surplus_base": 2155, "strain_base": 1915}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (会心 会效 破招) 12100": {"id": 37802, "school": "精简", "kind": "外功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1529, "surplus_base": 1295, "physical_critical_strike_base": 2237, "physical_critical_power_base": 1178}, "embed": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (破招 无双) 12100": {"id": 37801, "school": "精简", "kind": "外功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1529, "surplus_base": 2414, "strain_base": 2414}, "embed": {"physical_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "外功无封项链 (会心) 12100": {"id": 37800, "school": "精简", "kind": "外功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1792, "physical_critical_strike_base": 4181}, "embed": {"physical_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (会心 会效 破招) 12100": {"id": 37799, "school": "精简", "kind": "内功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 1835, "surplus_base": 1295, "all_critical_strike_base": 2237, "all_critical_power_base": 1178}, "embed": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (破招 无双) 12100": {"id": 37798, "school": "精简", "kind": "内功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 1835, "surplus_base": 2414, "strain_base": 2414}, "embed": {"all_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "内功无封项链 (会心) 12100": {"id": 37797, "school": "精简", "kind": "内功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2151, "all_critical_strike_base": 4181}, "embed": {"all_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}}
         
     | 
| 
         | 
|
| 1 | 
         
            +
            {"无者链#39909(破防 破招) 15800": {"id": 39909, "school": "通用", "kind": "身法", "level": 15800, "max_strength": 6, "base": {}, "magic": {"agility_base": 552, "physical_attack_power_base": 895, "physical_overcome_base": 2768, "surplus_base": 2460}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "运上链#39908(破防 破招) 15800": {"id": 39908, "school": "通用", "kind": "力道", "level": 15800, "max_strength": 6, "base": {}, "magic": {"strength_base": 552, "physical_attack_power_base": 895, "physical_overcome_base": 2768, "surplus_base": 2460}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "爪动链#39907(破防 破招) 15800": {"id": 39907, "school": "通用", "kind": "元气", "level": 15800, "max_strength": 6, "base": {}, "magic": {"spunk_base": 552, "magical_attack_power_base": 1074, "magical_overcome_base": 2768, "surplus_base": 2460}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "文通链#39906(破防 破招) 15800": {"id": 39906, "school": "通用", "kind": "根骨", "level": 15800, "max_strength": 6, "base": {}, "magic": {"spirit_base": 552, "magical_attack_power_base": 1074, "magical_overcome_base": 2768, "surplus_base": 2460}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "救困链#39837(会心 无双) 15600": {"id": 39837, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "磊落链#39836(会心 无双) 15600": {"id": 39836, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "良安链#39835(会心 无双) 15600": {"id": 39835, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "情义链#39834(会心 无双) 15600": {"id": 39834, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "照耀链#39819(破防 无双) 15600": {"id": 39819, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "如雪链#39818(破防 无双) 15600": {"id": 39818, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "宫阙链#39817(破防 无双) 15600": {"id": 39817, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "绕城链#39816(破防 无双) 15600": {"id": 39816, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39941(破防 破招 无双) 15200": {"id": 39941, "school": "精简", "kind": "外功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1920, "surplus_base": 2071, "physical_overcome_base": 2515, "strain_base": 1479}, "embed": {"physical_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39940(会心 破招) 15200": {"id": 39940, "school": "精简", "kind": "外功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1920, "surplus_base": 3107, "physical_critical_strike_base": 2959}, "embed": {"physical_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39939(破防) 15200": {"id": 39939, "school": "精简", "kind": "外功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 2252, "physical_overcome_base": 5252}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39938(破防 破招 无双) 15200": {"id": 39938, "school": "精简", "kind": "内功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2305, "surplus_base": 2071, "magical_overcome_base": 2515, "strain_base": 1479}, "embed": {"all_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39937(会心 破招) 15200": {"id": 39937, "school": "精简", "kind": "内功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2305, "surplus_base": 3107, "all_critical_strike_base": 2959}, "embed": {"all_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39936(破防) 15200": {"id": 39936, "school": "精简", "kind": "内功", "level": 15200, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2702, "magical_overcome_base": 5252}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无者链#39897(破防 破招) 14800": {"id": 39897, "school": "通用", "kind": "身法", "level": 14800, "max_strength": 6, "base": {}, "magic": {"agility_base": 517, "physical_attack_power_base": 838, "physical_overcome_base": 2593, "surplus_base": 2305}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "运上链#39896(破防 破招) 14800": {"id": 39896, "school": "通用", "kind": "力道", "level": 14800, "max_strength": 6, "base": {}, "magic": {"strength_base": 517, "physical_attack_power_base": 838, "physical_overcome_base": 2593, "surplus_base": 2305}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "爪动链#39895(破防 破招) 14800": {"id": 39895, "school": "通用", "kind": "元气", "level": 14800, "max_strength": 6, "base": {}, "magic": {"spunk_base": 517, "magical_attack_power_base": 1006, "magical_overcome_base": 2593, "surplus_base": 2305}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "文通链#39894(破防 破招) 14800": {"id": 39894, "school": "通用", "kind": "根骨", "level": 14800, "max_strength": 6, "base": {}, "magic": {"spirit_base": 517, "magical_attack_power_base": 1006, "magical_overcome_base": 2593, "surplus_base": 2305}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39929(会心 会效 破招) 14350": {"id": 39929, "school": "精简", "kind": "外功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1813, "surplus_base": 1536, "physical_critical_strike_base": 2654, "physical_critical_power_base": 1397}, "embed": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39928(破招 无双) 14350": {"id": 39928, "school": "精简", "kind": "外功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1813, "surplus_base": 2863, "strain_base": 2863}, "embed": {"physical_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39927(会心) 14350": {"id": 39927, "school": "精简", "kind": "外功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 2126, "physical_critical_strike_base": 4958}, "embed": {"physical_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39926(会心 会效 破招) 14350": {"id": 39926, "school": "精简", "kind": "内功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2176, "surplus_base": 1536, "all_critical_strike_base": 2654, "all_critical_power_base": 1397}, "embed": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39925(破招 无双) 14350": {"id": 39925, "school": "精简", "kind": "内功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2176, "surplus_base": 2863, "strain_base": 2863}, "embed": {"all_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#39924(会心) 14350": {"id": 39924, "school": "精简", "kind": "内功", "level": 14350, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2551, "all_critical_strike_base": 4958}, "embed": {"all_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "逢杨链#38845(破防 破招) 14150": {"id": 38845, "school": "通用", "kind": "身法", "level": 14150, "max_strength": 6, "base": {}, "magic": {"agility_base": 494, "physical_attack_power_base": 801, "physical_overcome_base": 2479, "surplus_base": 2203}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客路链#38844(破防 破招) 14150": {"id": 38844, "school": "通用", "kind": "力道", "level": 14150, "max_strength": 6, "base": {}, "magic": {"strength_base": 494, "physical_attack_power_base": 801, "physical_overcome_base": 2479, "surplus_base": 2203}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "日倾链#38843(破防 破招) 14150": {"id": 38843, "school": "通用", "kind": "元气", "level": 14150, "max_strength": 6, "base": {}, "magic": {"spunk_base": 494, "magical_attack_power_base": 962, "magical_overcome_base": 2479, "surplus_base": 2203}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "寒霖链#38842(破防 破招) 14150": {"id": 38842, "school": "通用", "kind": "根骨", "level": 14150, "max_strength": 6, "base": {}, "magic": {"spirit_base": 494, "magical_attack_power_base": 962, "magical_overcome_base": 2479, "surplus_base": 2203}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "危光链#39807(破防 无双) 13950": {"id": 39807, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "危雨链#39806(破防 无双) 13950": {"id": 39806, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "危影链#39805(破防 无双) 13950": {"id": 39805, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "危音链#39804(破防 无双) 13950": {"id": 39804, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "踏雁链#38773(会心 无双) 13950": {"id": 38773, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "素鸦链#38772(会心 无双) 13950": {"id": 38772, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "壑云链#38771(会心 无双) 13950": {"id": 38771, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "寒绡链#38770(会心 无双) 13950": {"id": 38770, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "风掣链#38755(破防 无双) 13950": {"id": 38755, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "凛行链#38754(破防 无双) 13950": {"id": 38754, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "开颐链#38753(破防 无双) 13950": {"id": 38753, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "扬英链#38752(破防 无双) 13950": {"id": 38752, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无者链#39885(破防 破招) 13800": {"id": 39885, "school": "通用", "kind": "身法", "level": 13800, "max_strength": 6, "base": {}, "magic": {"agility_base": 482, "physical_attack_power_base": 782, "physical_overcome_base": 2417, "surplus_base": 2149}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "运上链#39884(破防 破招) 13800": {"id": 39884, "school": "通用", "kind": "力道", "level": 13800, "max_strength": 6, "base": {}, "magic": {"strength_base": 482, "physical_attack_power_base": 782, "physical_overcome_base": 2417, "surplus_base": 2149}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "爪动链#39883(破防 破招) 13800": {"id": 39883, "school": "通用", "kind": "元气", "level": 13800, "max_strength": 6, "base": {}, "magic": {"spunk_base": 482, "magical_attack_power_base": 938, "magical_overcome_base": 2417, "surplus_base": 2149}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "文通链#39882(破防 破招) 13800": {"id": 39882, "school": "通用", "kind": "根骨", "level": 13800, "max_strength": 6, "base": {}, "magic": {"spirit_base": 482, "magical_attack_power_base": 938, "magical_overcome_base": 2417, "surplus_base": 2149}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38881(会心 破招 无双) 13550": {"id": 38881, "school": "精简", "kind": "外功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1712, "surplus_base": 1451, "physical_critical_strike_base": 2506, "strain_base": 1451}, "embed": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38880(破防 无双) 13550": {"id": 38880, "school": "精简", "kind": "外功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1712, "physical_overcome_base": 2637, "strain_base": 2769}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38879(无双) 13550": {"id": 38879, "school": "精简", "kind": "外功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 2007, "strain_base": 4681}, "embed": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38878(会心 破招 无双) 13550": {"id": 38878, "school": "精简", "kind": "内功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2054, "surplus_base": 1451, "all_critical_strike_base": 2506, "strain_base": 1451}, "embed": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38877(破防 无双) 13550": {"id": 38877, "school": "精简", "kind": "内功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2054, "magical_overcome_base": 2637, "strain_base": 2769}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38876(无双) 13550": {"id": 38876, "school": "精简", "kind": "内功", "level": 13550, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2409, "strain_base": 4681}, "embed": {"all_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "逢杨链#38833(破防 破招) 13300": {"id": 38833, "school": "通用", "kind": "身法", "level": 13300, "max_strength": 6, "base": {}, "magic": {"agility_base": 464, "physical_attack_power_base": 753, "physical_overcome_base": 2330, "surplus_base": 2071}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客路链#38832(破防 破招) 13300": {"id": 38832, "school": "通用", "kind": "力道", "level": 13300, "max_strength": 6, "base": {}, "magic": {"strength_base": 464, "physical_attack_power_base": 753, "physical_overcome_base": 2330, "surplus_base": 2071}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "日倾链#38831(破防 破招) 13300": {"id": 38831, "school": "通用", "kind": "元气", "level": 13300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 464, "magical_attack_power_base": 904, "magical_overcome_base": 2330, "surplus_base": 2071}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "寒霖链#38830(破防 破招) 13300": {"id": 38830, "school": "通用", "kind": "根骨", "level": 13300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 464, "magical_attack_power_base": 904, "magical_overcome_base": 2330, "surplus_base": 2071}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无者链#39873(破防 破招) 12800": {"id": 39873, "school": "通用", "kind": "身法", "level": 12800, "max_strength": 6, "base": {}, "magic": {"agility_base": 447, "physical_attack_power_base": 725, "physical_overcome_base": 2242, "surplus_base": 1993}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "运上链#39872(破防 破招) 12800": {"id": 39872, "school": "通用", "kind": "力道", "level": 12800, "max_strength": 6, "base": {}, "magic": {"strength_base": 447, "physical_attack_power_base": 725, "physical_overcome_base": 2242, "surplus_base": 1993}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "爪动链#39871(破防 破招) 12800": {"id": 39871, "school": "通用", "kind": "元气", "level": 12800, "max_strength": 6, "base": {}, "magic": {"spunk_base": 447, "magical_attack_power_base": 870, "magical_overcome_base": 2242, "surplus_base": 1993}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "文通链#39870(破防 破招) 12800": {"id": 39870, "school": "通用", "kind": "根骨", "level": 12800, "max_strength": 6, "base": {}, "magic": {"spirit_base": 447, "magical_attack_power_base": 870, "magical_overcome_base": 2242, "surplus_base": 1993}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38865(破防 破招 无双) 12800": {"id": 38865, "school": "精简", "kind": "外功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1617, "surplus_base": 1744, "physical_overcome_base": 2118, "strain_base": 1246}, "embed": {"physical_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38864(会心 破招) 12800": {"id": 38864, "school": "精简", "kind": "外功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1617, "surplus_base": 2616, "physical_critical_strike_base": 2491}, "embed": {"physical_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38863(破防) 12800": {"id": 38863, "school": "精简", "kind": "外功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1896, "physical_overcome_base": 4422}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38862(破防 破招 无双) 12800": {"id": 38862, "school": "精简", "kind": "内功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 1941, "surplus_base": 1744, "magical_overcome_base": 2118, "strain_base": 1246}, "embed": {"all_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38861(会心 破招) 12800": {"id": 38861, "school": "精简", "kind": "内功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 1941, "surplus_base": 2616, "all_critical_strike_base": 2491}, "embed": {"all_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#38860(破防) 12800": {"id": 38860, "school": "精简", "kind": "内功", "level": 12800, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2275, "magical_overcome_base": 4422}, "embed": {"surplus_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "欺林链#37770(破防 破招) 12600": {"id": 37770, "school": "通用", "kind": "身法", "level": 12600, "max_strength": 6, "base": {}, "magic": {"agility_base": 440, "physical_attack_power_base": 714, "physical_overcome_base": 2207, "surplus_base": 1962}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "定酣链#37769(破防 破招) 12600": {"id": 37769, "school": "通用", "kind": "力道", "level": 12600, "max_strength": 6, "base": {}, "magic": {"strength_base": 440, "physical_attack_power_base": 714, "physical_overcome_base": 2207, "surplus_base": 1962}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "畅光链#37768(破防 破招) 12600": {"id": 37768, "school": "通用", "kind": "元气", "level": 12600, "max_strength": 6, "base": {}, "magic": {"spunk_base": 440, "magical_attack_power_base": 856, "magical_overcome_base": 2207, "surplus_base": 1962}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "游零链#37767(破防 破招) 12600": {"id": 37767, "school": "通用", "kind": "根骨", "level": 12600, "max_strength": 6, "base": {}, "magic": {"spirit_base": 440, "magical_attack_power_base": 856, "magical_overcome_base": 2207, "surplus_base": 1962}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "灵空·风行链#39683(破防 无双) 12450": {"id": 39683, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "灵空·撼地链#39682(破防 无双) 12450": {"id": 39682, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "灵空·未判链#39681(破防 无双) 12450": {"id": 39681, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "灵空·心斋链#39680(破防 无双) 12450": {"id": 39680, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "逢杨链#38821(破防 破招) 12450": {"id": 38821, "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": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "客路链#38820(破防 破招) 12450": {"id": 38820, "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": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "日倾链#38819(破防 破招) 12450": {"id": 38819, "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": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "寒霖链#38818(破防 破招) 12450": {"id": 38818, "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": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖月链#37812(会心 破招) 12450": {"id": 37812, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖静链#37811(会心 破招) 12450": {"id": 37811, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖烟链#37810(会心 破招) 12450": {"id": 37810, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "湖寂链#37809(会心 破招) 12450": {"id": 37809, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "染辞链#37702(会心 无双) 12450": {"id": 37702, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "温刃链#37701(会心 无双) 12450": {"id": 37701, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "沁渡链#37700(会心 无双) 12450": {"id": 37700, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "朝华链#37699(会心 无双) 12450": {"id": 37699, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "商野链#37684(破防 无双) 12450": {"id": 37684, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "安衿链#37683(破防 无双) 12450": {"id": 37683, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "椴微链#37682(破防 无双) 12450": {"id": 37682, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "池泓链#37681(破防 无双) 12450": {"id": 37681, "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": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临越链#34190(破防 破招) 12400": {"id": 34190, "school": "通用", "kind": "身法", "level": 12400, "max_strength": 6, "base": {}, "magic": {"agility_base": 433, "physical_attack_power_base": 702, "physical_overcome_base": 2172, "surplus_base": 1931}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临邦链#34189(破防 破招) 12400": {"id": 34189, "school": "通用", "kind": "力道", "level": 12400, "max_strength": 6, "base": {}, "magic": {"strength_base": 433, "physical_attack_power_base": 702, "physical_overcome_base": 2172, "surplus_base": 1931}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临溪链#34188(破防 破招) 12400": {"id": 34188, "school": "通用", "kind": "元气", "level": 12400, "max_strength": 6, "base": {}, "magic": {"spunk_base": 433, "magical_attack_power_base": 843, "magical_overcome_base": 2172, "surplus_base": 1931}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "临黎链#34187(破防 破招) 12400": {"id": 34187, "school": "通用", "kind": "根骨", "level": 12400, "max_strength": 6, "base": {}, "magic": {"spirit_base": 433, "magical_attack_power_base": 843, "magical_overcome_base": 2172, "surplus_base": 1931}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "久念链#34262(会心 破招) 12300": {"id": 34262, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "拭江链#34261(会心 破招) 12300": {"id": 34261, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "藏峦链#34260(会心 破招) 12300": {"id": 34260, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "谨峰链#34259(会心 破招) 12300": {"id": 34259, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "风岱链#34244(会心 无双) 12300": {"id": 34244, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "项昌链#34243(会心 无双) 12300": {"id": 34243, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "故芳链#34242(会心 无双) 12300": {"id": 34242, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "all_critical_strike_base": 2155, "strain_base": 1915}, "embed": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "剪桐链#34241(会心 无双) 12300": {"id": 34241, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "北邱链#34226(破防 破招) 12300": {"id": 34226, "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": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "曲郦链#34225(破防 破招) 12300": {"id": 34225, "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": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "花霭链#34224(破防 破招) 12300": {"id": 34224, "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": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "途南链#34223(破防 破招) 12300": {"id": 34223, "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": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "渊忱链#34208(加速 无双) 12300": {"id": 34208, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "羡双链#34207(加速 无双) 12300": {"id": 34207, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "haste_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "庭澜链#34206(加速 无双) 12300": {"id": 34206, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "故云链#34205(加速 无双) 12300": {"id": 34205, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "haste_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆宁链#34118(破防 无双) 12300": {"id": 34118, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆敬链#34117(破防 无双) 12300": {"id": 34117, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "physical_overcome_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆惜链#34116(破防 无双) 12300": {"id": 34116, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "忆安链#34115(破防 无双) 12300": {"id": 34115, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "magical_overcome_base": 2155, "strain_base": 1915}, "embed": {"strain_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "盈绝链#34100(会心 破招) 12300": {"id": 34100, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "垣翰链#34099(会心 破招) 12300": {"id": 34099, "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": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "语阔链#34098(会心 破招) 12300": {"id": 34098, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "擒雨链#34097(会心 破招) 12300": {"id": 34097, "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": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "潋阳链#34082(破招 无双) 12300": {"id": 34082, "school": "通用", "kind": "身法", "level": 12300, "max_strength": 6, "base": {}, "magic": {"agility_base": 429, "physical_attack_power_base": 697, "surplus_base": 2155, "strain_base": 1915}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "重关链#34081(破招 无双) 12300": {"id": 34081, "school": "通用", "kind": "力道", "level": 12300, "max_strength": 6, "base": {}, "magic": {"strength_base": 429, "physical_attack_power_base": 697, "surplus_base": 2155, "strain_base": 1915}, "embed": {"physical_attack_power_base": 72}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "烟琐链#34080(破招 无双) 12300": {"id": 34080, "school": "通用", "kind": "元气", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spunk_base": 429, "magical_attack_power_base": 836, "surplus_base": 2155, "strain_base": 1915}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "德襄链#34079(破招 无双) 12300": {"id": 34079, "school": "通用", "kind": "根骨", "level": 12300, "max_strength": 6, "base": {}, "magic": {"spirit_base": 429, "magical_attack_power_base": 836, "surplus_base": 2155, "strain_base": 1915}, "embed": {"magical_attack_power_base": 86}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#37802(会心 会效 破招) 12100": {"id": 37802, "school": "精简", "kind": "外功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1529, "surplus_base": 1295, "physical_critical_strike_base": 2237, "physical_critical_power_base": 1178}, "embed": {"physical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#37801(破招 无双) 12100": {"id": 37801, "school": "精简", "kind": "外功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1529, "surplus_base": 2414, "strain_base": 2414}, "embed": {"physical_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#37800(会心) 12100": {"id": 37800, "school": "精简", "kind": "外功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"physical_attack_power_base": 1792, "physical_critical_strike_base": 4181}, "embed": {"physical_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#37799(会心 会效 破招) 12100": {"id": 37799, "school": "精简", "kind": "内功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 1835, "surplus_base": 1295, "all_critical_strike_base": 2237, "all_critical_power_base": 1178}, "embed": {"magical_overcome_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#37798(破招 无双) 12100": {"id": 37798, "school": "精简", "kind": "内功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 1835, "surplus_base": 2414, "strain_base": 2414}, "embed": {"all_critical_strike_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}, "无封项链#37797(会心) 12100": {"id": 37797, "school": "精简", "kind": "内功", "level": 12100, "max_strength": 3, "base": {}, "magic": {"magical_attack_power_base": 2151, "all_critical_strike_base": 4181}, "embed": {"all_critical_power_base": 161}, "gains": [], "special_enchant": [], "set_id": null, "set_attr": {}, "set_gain": {}}}
         
     | 
    	
        qt/assets/equipments/pendant
    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": 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": {}}}
         
     | 
| 
         | 
|
| 1 | 
         
            +
            {"客行江湖·纵巧戒#39921(破防 无双) 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": {}}, "客行江湖·之远戒#39920(破防 无双) 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": {}}, "客行江湖·磐气戒#39919(破防 无双) 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": {}}, "客行江湖·风翎戒#39918(破防 无双) 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": {}}, "似窈戒#39869(破防 破招) 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": {}}, "卓然戒#39868(会心 无双) 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": {}}, "乃书戒#39867(破防 破招) 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": {}}, "广萤戒#39866(会心 无双) 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": {}}, "赤树戒#39865(破防 无双) 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": {}}, "东倾戒#39864(破防 无双) 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": {}}, "望若戒#39863(会心 会效 破招) 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": {}}, "姑引戒#39862(破防 会心) 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": {}}, "勤俭戒#39861(无双) 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": {}}, "庆本戒#39860(会心 会效 破招) 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": {}}, "耐歌戒#39859(破防 会心) 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": {}}, "萌音戒#39858(无双) 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": {}}, "救困戒#39849(会心 无双) 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": {}}, "磊落戒#39848(会心 无双) 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": {}}, "良安戒#39847(会心 无双) 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": {}}, "情义戒#39846(会心 无双) 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": {}}, "照耀指环#39831(破防 破招) 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": {}}, "如雪指环#39830(破防 破招) 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": {}}, "宫阙指环#39829(破防 破招) 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": {}}, "绕城指环#39828(破防 破招) 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": {}}, "行雾中·徙#40869(破防 破招) 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": {}}, "行雾中·兆#40868(破防 破招) 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": {}}, "行雾中·誓#40867(破防 破招) 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": {}}, "行雾中·赦#40866(破防 破招) 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": {}}, "叠武戒#39795(破防 破招) 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": {}}, "绘山戒#39794(破防 破招) 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": {}}, "归朔戒#39793(破防 破招) 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": {}}, "青乡戒#39792(破防 破招) 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": {}}, "客行江湖·霄月戒#38857(破防 无双) 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": {}}, "客行江湖·听钟戒#38856(破防 无双) 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": {}}, "客行江湖·断意戒#38855(破防 无双) 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": {}}, "客行江湖·意悠戒#38854(破防 无双) 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": {}}, "时岑戒#38805(破防 破招) 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": {}}, "游练戒#38804(会心 无双) 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": {}}, "璨云戒#38803(破防 破招) 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": {}}, "丰冉戒#38802(会心 无双) 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": {}}, "问年戒#38801(破防 无双) 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": {}}, "峻水戒#38800(破防 无双) 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": {}}, "光霆戒#38799(会心 会效 破招) 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": {}}, "兰珑戒#38798(破防 会心) 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": {}}, "时越戒#38797(无双) 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": {}}, "希延戒#38796(会心 会效 破招) 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": {}}, "羽容戒#38795(破防 会心) 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": {}}, "丹莲戒#38794(无双) 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": {}}, "踏雁戒#38785(会心 无双) 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": {}}, "素鸦戒#38784(会心 无双) 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": {}}, "壑云戒#38783(会心 无双) 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": {}}, "寒绡戒#38782(会心 无双) 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": {}}, "风掣指环#38767(破防 破招) 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": {}}, "凛行指环#38766(破防 破招) 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": {}}, "开颐指环#38765(破防 破招) 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": {}}, "扬英指环#38764(破防 破招) 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": {}}, "暮雨玉#39801(会心 无双) 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": {}}, "暮雨石#39800(会心 无双) 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": {}}, "暮雨环#39799(会心 无双) 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": {}}, "暮雨戒#39798(会心 无双) 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": {}}, "湖月戒#37824(会心 破招) 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": {}}, "湖静戒#37823(会心 破招) 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": {}}, "湖烟戒#37822(会心 破招) 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": {}}, "湖寂戒#37821(会心 破招) 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": {}}, "客行江湖·天配戒#37782(破防 无双) 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": {}}, "客行江湖·梦花戒#37781(破防 无双) 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": {}}, "客行江湖·千世戒#37780(破防 无双) 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": {}}, "客行江湖·渐浓戒#37779(破防 无双) 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": {}}, "催时戒#37730(破防 无双) 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": {}}, "解怜戒#37729(破防 无双) 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": {}}, "破朝戒#37728(会心 无双) 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": {}}, "赫风戒#37727(破防 破招) 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": {}}, "问岐戒#37726(无双) 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": {}}, "帘絮戒#37725(会心 无双) 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": {}}, "清斗戒#37724(破防 破招) 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": {}}, "昭月戒#37723(无双) 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": {}}, "染辞戒#37714(会心 无双) 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": {}}, "温刃戒#37713(会心 无双) 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": {}}, "沁渡戒#37712(会心 无双) 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": {}}, "朝华戒#37711(会心 无双) 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": {}}, "商野指环#37696(破防 破招) 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": {}}, "安衿指环#37695(破防 破招) 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": {}}, "椴微指环#37694(破防 破招) 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": {}}, "池泓指环#37693(破防 破招) 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": {}}, "临仙戒#34202(会心 无双) 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": {}}, "临尚戒#34201(会心 无双) 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": {}}, "临曦戒#34200(会心 无双) 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": {}}, "临衣戒#34199(会心 无双) 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": {}}, "梧风御厨戒指·刀功#39791(会心 无双) 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": {}}, "岚峰御厨戒指·刀功#39790(会心 无双) 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": {}}, "迎新御厨戒指·火候#39788(会心 无双) 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": {}}, "沧波御厨戒指·刀功 #39785(会心 无双) 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": {}}, "傲寒御厨戒指·刀功 #39784(会心 无双) 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": {}}, "古意御厨戒指·火候#39782(会心 无双) 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": {}}, "塞雪御厨戒指·刀工#39780(会心 无双) 12300": {"id": 39780, "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": {}}, "蜀月御厨戒指·刀功#39775(会心 无双) 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": {}}, "蜀月御厨戒指·火候#39774(会心 无双) 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": {}}, "霓裳御厨戒指·火候#39770(会心 无双) 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": {}}, "灵虚御厨戒指·刀功#39769(会心 无双) 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": {}}, "灵虚御厨戒指·火候#39768(会心 无双) 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": {}}, "翡翠御厨戒指·火候#39764(会心 无双) 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": {}}, "菩提御厨戒指·火候#39762(会心 无双) 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": {}}, "久念戒#34274(破防 破招) 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": {}}, "拭江戒#34273(破防 破招) 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": {}}, "藏峦戒#34272(破防 破招) 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": {}}, "谨峰戒#34271(破防 破招) 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": {}}, "风岱戒#34256(会心 破招) 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": {}}, "项昌戒#34255(会心 破招) 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": {}}, "故芳戒#34254(会心 破招) 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": {}}, "剪桐戒#34253(会心 破招) 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": {}}, "北邱戒#34238(加速 破招) 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": {}}, "曲郦戒#34237(加速 破招) 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": {}}, "花霭戒#34236(加速 破招) 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": {}}, "途南戒#34235(加速 破招) 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": {}}, "渊忱戒#34220(破招 无双) 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": {}}, "羡双戒#34219(破招 无双) 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": {}}, "庭澜戒#34218(破招 无双) 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": {}}, "故云戒#34217(破招 无双) 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": {}}, "忆宁戒#34130(会心 破招) 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": {}}, "忆敬戒#34129(会心 破招) 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": {}}, "忆惜戒#34128(会心 破招) 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": {}}, "忆安戒#34127(会心 破招) 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": {}}, "盈绝戒#34112(加速 无双) 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": {}}, "垣翰戒#34111(加速 无双) 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": {}}, "语阔戒#34110(加速 无双) 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": {}}, "擒雨戒#34109(加速 无双) 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": {}}, "潋阳戒#34094(破防 破招) 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": {}}, "重关戒#34093(破防 破招) 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": {}}, "烟琐戒#34092(破防 破招) 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": {}}, "德襄戒#34091(破防 破招) 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/tertiary_weapon
    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
    
    | 
         @@ -24,6 +24,10 @@ class TeamGainsWidget(QWidget): 
     | 
|
| 24 | 
         | 
| 25 | 
         
             
                    self.team_gains = {}
         
     | 
| 26 | 
         | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 27 | 
         
             
                    tabs = QTabWidget()
         
     | 
| 28 | 
         
             
                    layout.addWidget(tabs)
         
     | 
| 29 | 
         | 
| 
         @@ -35,9 +39,11 @@ class TeamGainsWidget(QWidget): 
     | 
|
| 35 | 
         
             
                    tab_layout.addWidget(self.team_gains["袖气"], 0, 0)
         
     | 
| 36 | 
         | 
| 37 | 
         
             
                    self.team_gains["左旋右转"] = {
         
     | 
| 38 | 
         
            -
                        "stack": SpinWithLabel("左旋右转", "层数", maximum=TEAM_GAIN_LIMIT["左旋右转"]["stack"])
         
     | 
| 
         | 
|
| 39 | 
         
             
                    }
         
     | 
| 40 | 
         
             
                    tab_layout.addWidget(self.team_gains["左旋右转"]["stack"], 1, 0)
         
     | 
| 
         | 
|
| 41 | 
         
             
                    self.team_gains["泠风解怀"] = {
         
     | 
| 42 | 
         
             
                        "rate": SpinWithLabel("泠风解怀", "覆盖(%)", maximum=100)
         
     | 
| 43 | 
         
             
                    }
         
     | 
| 
         | 
|
| 24 | 
         | 
| 25 | 
         
             
                    self.team_gains = {}
         
     | 
| 26 | 
         | 
| 27 | 
         
            +
                    self.real_formulation = RadioWithLabel("开启真实团队增益模拟(仅包括存在覆盖率的角色BUFF,不包含目标和常驻BUFF)")
         
     | 
| 28 | 
         
            +
             
     | 
| 29 | 
         
            +
                    layout.addWidget(self.real_formulation)
         
     | 
| 30 | 
         
            +
             
     | 
| 31 | 
         
             
                    tabs = QTabWidget()
         
     | 
| 32 | 
         
             
                    layout.addWidget(tabs)
         
     | 
| 33 | 
         | 
| 
         | 
|
| 39 | 
         
             
                    tab_layout.addWidget(self.team_gains["袖气"], 0, 0)
         
     | 
| 40 | 
         | 
| 41 | 
         
             
                    self.team_gains["左旋右转"] = {
         
     | 
| 42 | 
         
            +
                        "stack": SpinWithLabel("左旋右转", "层数", maximum=TEAM_GAIN_LIMIT["左旋右转"]["stack"]),
         
     | 
| 43 | 
         
            +
                        "rate": SpinWithLabel("左旋右转", "覆盖(%)", maximum=100)
         
     | 
| 44 | 
         
             
                    }
         
     | 
| 45 | 
         
             
                    tab_layout.addWidget(self.team_gains["左旋右转"]["stack"], 1, 0)
         
     | 
| 46 | 
         
            +
                    tab_layout.addWidget(self.team_gains["左旋右转"]["rate"], 1, 1)
         
     | 
| 47 | 
         
             
                    self.team_gains["泠风解怀"] = {
         
     | 
| 48 | 
         
             
                        "rate": SpinWithLabel("泠风解怀", "覆盖(%)", maximum=100)
         
     | 
| 49 | 
         
             
                    }
         
     | 
    	
        qt/components/dashboard.py
    CHANGED
    
    | 
         @@ -32,13 +32,19 @@ class DashboardWidget(QWidget): 
     | 
|
| 32 | 
         
             
                    top_layout = QHBoxLayout()
         
     | 
| 33 | 
         
             
                    layout.addLayout(top_layout)
         
     | 
| 34 | 
         | 
| 
         | 
|
| 
         | 
|
| 35 | 
         
             
                    self.target_level = ComboWithLabel("目标等级", items=[str(level) for level in SHIELD_BASE_MAP])
         
     | 
| 36 | 
         
             
                    top_layout.addWidget(self.target_level)
         
     | 
| 37 | 
         
             
                    self.duration = DoubleSpinWithLabel("战斗时长", maximum=3600, value=180)
         
     | 
| 38 | 
         
             
                    top_layout.addWidget(self.duration)
         
     | 
| 39 | 
         | 
| 40 | 
         
            -
                     
     | 
| 41 | 
         
            -
                    layout. 
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 42 | 
         | 
| 43 | 
         
             
                    bottom_layout = QHBoxLayout()
         
     | 
| 44 | 
         
             
                    layout.addLayout(bottom_layout)
         
     | 
| 
         | 
|
| 32 | 
         
             
                    top_layout = QHBoxLayout()
         
     | 
| 33 | 
         
             
                    layout.addLayout(top_layout)
         
     | 
| 34 | 
         | 
| 35 | 
         
            +
                    self.target_select = ComboWithLabel("选择目标")
         
     | 
| 36 | 
         
            +
                    top_layout.addWidget(self.target_select)
         
     | 
| 37 | 
         
             
                    self.target_level = ComboWithLabel("目标等级", items=[str(level) for level in SHIELD_BASE_MAP])
         
     | 
| 38 | 
         
             
                    top_layout.addWidget(self.target_level)
         
     | 
| 39 | 
         
             
                    self.duration = DoubleSpinWithLabel("战斗时长", maximum=3600, value=180)
         
     | 
| 40 | 
         
             
                    top_layout.addWidget(self.duration)
         
     | 
| 41 | 
         | 
| 42 | 
         
            +
                    mid_layout = QHBoxLayout()
         
     | 
| 43 | 
         
            +
                    layout.addLayout(mid_layout)
         
     | 
| 44 | 
         
            +
                    self.formulate_button = QPushButton(text="开始模拟!")
         
     | 
| 45 | 
         
            +
                    mid_layout.addWidget(self.formulate_button)
         
     | 
| 46 | 
         
            +
                    self.save_button = QPushButton(text="保存JSON")
         
     | 
| 47 | 
         
            +
                    mid_layout.addWidget(self.save_button)
         
     | 
| 48 | 
         | 
| 49 | 
         
             
                    bottom_layout = QHBoxLayout()
         
     | 
| 50 | 
         
             
                    layout.addLayout(bottom_layout)
         
     | 
    	
        qt/scripts/bonuses.py
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 1 | 
         
             
            from general.gains.formation import FORMATION_GAINS
         
     | 
| 2 | 
         
            -
            from general.gains.team import TEAM_GAINS
         
     | 
| 3 | 
         | 
| 4 | 
         
             
            from qt.components import RadioWithLabel, ComboWithLabel, SpinWithLabel
         
     | 
| 5 | 
         
             
            from qt.components.bonuses import BonusesWidget
         
     | 
| 
         @@ -10,7 +10,6 @@ class Bonuses(dict): 
     | 
|
| 10 | 
         
             
                @property
         
     | 
| 11 | 
         
             
                def gains(self):
         
     | 
| 12 | 
         
             
                    gains = list(self.values())
         
     | 
| 13 | 
         
            -
             
     | 
| 14 | 
         
             
                    if "秋肃" in self and "戒火" in self:
         
     | 
| 15 | 
         
             
                        gains.remove(self["戒火"])
         
     | 
| 16 | 
         | 
| 
         @@ -41,6 +40,14 @@ def bonuses_script(parser: Parser, bonuses_widget: BonusesWidget): 
     | 
|
| 41 | 
         
             
                bonuses_widget.formation.core_rate.spin_box.valueChanged.connect(formation_update)
         
     | 
| 42 | 
         
             
                bonuses_widget.formation.rate.spin_box.valueChanged.connect(formation_update)
         
     | 
| 43 | 
         | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 44 | 
         
             
                def radio_update(label):
         
     | 
| 45 | 
         
             
                    widget = bonuses_widget.team_gains[label]
         
     | 
| 46 | 
         | 
| 
         | 
|
| 1 | 
         
             
            from general.gains.formation import FORMATION_GAINS
         
     | 
| 2 | 
         
            +
            from general.gains.team import TEAM_GAINS, RealTeamGain
         
     | 
| 3 | 
         | 
| 4 | 
         
             
            from qt.components import RadioWithLabel, ComboWithLabel, SpinWithLabel
         
     | 
| 5 | 
         
             
            from qt.components.bonuses import BonusesWidget
         
     | 
| 
         | 
|
| 10 | 
         
             
                @property
         
     | 
| 11 | 
         
             
                def gains(self):
         
     | 
| 12 | 
         
             
                    gains = list(self.values())
         
     | 
| 
         | 
|
| 13 | 
         
             
                    if "秋肃" in self and "戒火" in self:
         
     | 
| 14 | 
         
             
                        gains.remove(self["戒火"])
         
     | 
| 15 | 
         | 
| 
         | 
|
| 40 | 
         
             
                bonuses_widget.formation.core_rate.spin_box.valueChanged.connect(formation_update)
         
     | 
| 41 | 
         
             
                bonuses_widget.formation.rate.spin_box.valueChanged.connect(formation_update)
         
     | 
| 42 | 
         | 
| 43 | 
         
            +
                def real_team_gain():
         
     | 
| 44 | 
         
            +
                    widget = bonuses_widget.team_gains.real_formulation
         
     | 
| 45 | 
         
            +
                    if widget.radio_button.isChecked():
         
     | 
| 46 | 
         
            +
                        bonuses[None] = RealTeamGain()
         
     | 
| 47 | 
         
            +
                    else:
         
     | 
| 48 | 
         
            +
                        bonuses.pop(None, None)
         
     | 
| 49 | 
         
            +
                bonuses_widget.team_gains.real_formulation.radio_button.clicked.connect(real_team_gain)
         
     | 
| 50 | 
         
            +
             
     | 
| 51 | 
         
             
                def radio_update(label):
         
     | 
| 52 | 
         
             
                    widget = bonuses_widget.team_gains[label]
         
     | 
| 53 | 
         | 
    	
        qt/scripts/dashboard.py
    CHANGED
    
    | 
         @@ -1,3 +1,4 @@ 
     | 
|
| 
         | 
|
| 1 | 
         
             
            from typing import Dict
         
     | 
| 2 | 
         | 
| 3 | 
         
             
            from qt.components.dashboard import DashboardWidget
         
     | 
| 
         @@ -10,6 +11,7 @@ from qt.scripts.equipments import Equipments 
     | 
|
| 10 | 
         
             
            from qt.scripts.recipes import Recipes
         
     | 
| 11 | 
         
             
            from qt.scripts.talents import Talents
         
     | 
| 12 | 
         
             
            from utils.analyzer import analyze_details, Detail
         
     | 
| 
         | 
|
| 13 | 
         | 
| 14 | 
         | 
| 15 | 
         
             
            def summary_content(summary: Dict[str, Detail], total_damage):
         
     | 
| 
         @@ -34,7 +36,7 @@ def detail_content(detail: Detail): 
     | 
|
| 34 | 
         
             
                    ["命中伤害", f"{round(detail.damage)}"],
         
     | 
| 35 | 
         
             
                    ["会心伤害", f"{round(detail.critical_damage)}"],
         
     | 
| 36 | 
         
             
                    ["期望伤害", f"{round(detail.expected_damage)}"],
         
     | 
| 37 | 
         
            -
                    [" 
     | 
| 38 | 
         
             
                    ["实际会心", f"{round(detail.actual_critical_strike * 100, 2)}%"],
         
     | 
| 39 | 
         
             
                    ["数量", f"{detail.count}"]
         
     | 
| 40 | 
         
             
                ]
         
     | 
| 
         @@ -49,9 +51,10 @@ def detail_content(detail: Detail): 
     | 
|
| 49 | 
         
             
            def dashboard_script(parser: Parser,
         
     | 
| 50 | 
         
             
                                 dashboard_widget: DashboardWidget, talents: Talents, recipes: Recipes,
         
     | 
| 51 | 
         
             
                                 equipments: Equipments, consumables: Consumables, bonuses: Bonuses):
         
     | 
| 52 | 
         
            -
             
     | 
| 53 | 
         
             
                def formulate():
         
     | 
| 54 | 
         
            -
                     
     | 
| 
         | 
|
| 
         | 
|
| 55 | 
         
             
                    record = parser.current_records
         
     | 
| 56 | 
         
             
                    school = parser.current_school
         
     | 
| 57 | 
         | 
| 
         @@ -72,6 +75,7 @@ def dashboard_script(parser: Parser, 
     | 
|
| 72 | 
         
             
                    for gain in gains:
         
     | 
| 73 | 
         
             
                        gain.add(attribute, school.skills, school.buffs)
         
     | 
| 74 | 
         | 
| 
         | 
|
| 75 | 
         
             
                    dashboard_widget.final_attribute.set_content(school.attr_content(attribute))
         
     | 
| 76 | 
         
             
                    total, summary, details = analyze_details(record, duration, attribute, school)
         
     | 
| 77 | 
         | 
| 
         @@ -90,7 +94,17 @@ def dashboard_script(parser: Parser, 
     | 
|
| 90 | 
         | 
| 91 | 
         
             
                    dashboard_widget.summary.set_content(summary_content(summary, total.expected_damage))
         
     | 
| 92 | 
         | 
| 93 | 
         
            -
                dashboard_widget. 
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 94 | 
         | 
| 95 | 
         
             
                def set_skills():
         
     | 
| 96 | 
         
             
                    detail_widget = dashboard_widget.detail_widget
         
     | 
| 
         | 
|
| 1 | 
         
            +
            import json
         
     | 
| 2 | 
         
             
            from typing import Dict
         
     | 
| 3 | 
         | 
| 4 | 
         
             
            from qt.components.dashboard import DashboardWidget
         
     | 
| 
         | 
|
| 11 | 
         
             
            from qt.scripts.recipes import Recipes
         
     | 
| 12 | 
         
             
            from qt.scripts.talents import Talents
         
     | 
| 13 | 
         
             
            from utils.analyzer import analyze_details, Detail
         
     | 
| 14 | 
         
            +
            from utils.io import serialize
         
     | 
| 15 | 
         | 
| 16 | 
         | 
| 17 | 
         
             
            def summary_content(summary: Dict[str, Detail], total_damage):
         
     | 
| 
         | 
|
| 36 | 
         
             
                    ["命中伤害", f"{round(detail.damage)}"],
         
     | 
| 37 | 
         
             
                    ["会心伤害", f"{round(detail.critical_damage)}"],
         
     | 
| 38 | 
         
             
                    ["期望伤害", f"{round(detail.expected_damage)}"],
         
     | 
| 39 | 
         
            +
                    ["期望会心", f"{round(detail.critical_strike * 100, 2)}%"],
         
     | 
| 40 | 
         
             
                    ["实际会心", f"{round(detail.actual_critical_strike * 100, 2)}%"],
         
     | 
| 41 | 
         
             
                    ["数量", f"{detail.count}"]
         
     | 
| 42 | 
         
             
                ]
         
     | 
| 
         | 
|
| 51 | 
         
             
            def dashboard_script(parser: Parser,
         
     | 
| 52 | 
         
             
                                 dashboard_widget: DashboardWidget, talents: Talents, recipes: Recipes,
         
     | 
| 53 | 
         
             
                                 equipments: Equipments, consumables: Consumables, bonuses: Bonuses):
         
     | 
| 
         | 
|
| 54 | 
         
             
                def formulate():
         
     | 
| 55 | 
         
            +
                    target_name = dashboard_widget.target_select.combo_box.currentText()
         
     | 
| 56 | 
         
            +
                    target_id = parser.name2id.get(target_name, 0)
         
     | 
| 57 | 
         
            +
                    parser.current_target = target_id
         
     | 
| 58 | 
         
             
                    record = parser.current_records
         
     | 
| 59 | 
         
             
                    school = parser.current_school
         
     | 
| 60 | 
         | 
| 
         | 
|
| 75 | 
         
             
                    for gain in gains:
         
     | 
| 76 | 
         
             
                        gain.add(attribute, school.skills, school.buffs)
         
     | 
| 77 | 
         | 
| 78 | 
         
            +
                    duration = dashboard_widget.duration.spin_box.value()
         
     | 
| 79 | 
         
             
                    dashboard_widget.final_attribute.set_content(school.attr_content(attribute))
         
     | 
| 80 | 
         
             
                    total, summary, details = analyze_details(record, duration, attribute, school)
         
     | 
| 81 | 
         | 
| 
         | 
|
| 94 | 
         | 
| 95 | 
         
             
                    dashboard_widget.summary.set_content(summary_content(summary, total.expected_damage))
         
     | 
| 96 | 
         | 
| 97 | 
         
            +
                dashboard_widget.formulate_button.clicked.connect(formulate)
         
     | 
| 98 | 
         
            +
             
     | 
| 99 | 
         
            +
                def save_json():
         
     | 
| 100 | 
         
            +
                    target_name = dashboard_widget.target_select.combo_box.currentText()
         
     | 
| 101 | 
         
            +
                    target_id = parser.name2id.get(target_name, 0)
         
     | 
| 102 | 
         
            +
                    parser.current_target = target_id
         
     | 
| 103 | 
         
            +
                    record = parser.current_records
         
     | 
| 104 | 
         
            +
                    duration = dashboard_widget.duration.spin_box.value()
         
     | 
| 105 | 
         
            +
                    json.dump(serialize(record, duration), open(parser.file_name.strip(".jcl") + ".json", "w", encoding="utf-8"))
         
     | 
| 106 | 
         
            +
             
     | 
| 107 | 
         
            +
                dashboard_widget.save_button.clicked.connect(save_json)
         
     | 
| 108 | 
         | 
| 109 | 
         
             
                def set_skills():
         
     | 
| 110 | 
         
             
                    detail_widget = dashboard_widget.detail_widget
         
     | 
    	
        qt/scripts/top.py
    CHANGED
    
    | 
         @@ -28,10 +28,13 @@ def top_script( 
     | 
|
| 28 | 
         
             
                        return
         
     | 
| 29 | 
         
             
                    parser(file_name[0])
         
     | 
| 30 | 
         
             
                    top_widget.player_select.set_items(
         
     | 
| 31 | 
         
            -
                        [parser.id2name[player_id] for player_id in parser. 
     | 
| 32 | 
         
             
                    )
         
     | 
| 33 | 
         
             
                    top_widget.player_select.show()
         
     | 
| 34 | 
         
             
                    select_player(None)
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 35 | 
         | 
| 36 | 
         
             
                top_widget.upload_button.clicked.connect(upload_logs)
         
     | 
| 37 | 
         | 
| 
         @@ -41,7 +44,7 @@ def top_script( 
     | 
|
| 41 | 
         
             
                        return
         
     | 
| 42 | 
         
             
                    player_id = parser.name2id[player_name]
         
     | 
| 43 | 
         
             
                    parser.current_player = player_id
         
     | 
| 44 | 
         
            -
                    school = parser. 
     | 
| 45 | 
         
             
                    """ Update config """
         
     | 
| 46 | 
         
             
                    config_choices = list(CONFIG.get(school.school, {}))
         
     | 
| 47 | 
         
             
                    config_widget.config_select.set_items(config_choices, default_index=-1)
         
     | 
| 
         | 
|
| 28 | 
         
             
                        return
         
     | 
| 29 | 
         
             
                    parser(file_name[0])
         
     | 
| 30 | 
         
             
                    top_widget.player_select.set_items(
         
     | 
| 31 | 
         
            +
                        [parser.id2name[player_id] for player_id in parser.players], keep_index=True, default_index=0
         
     | 
| 32 | 
         
             
                    )
         
     | 
| 33 | 
         
             
                    top_widget.player_select.show()
         
     | 
| 34 | 
         
             
                    select_player(None)
         
     | 
| 35 | 
         
            +
                    dashboard_widget.target_select.set_items(
         
     | 
| 36 | 
         
            +
                        [""] + [parser.id2name[target_id] for target_id in parser.current_targets], keep_index=True, default_index=0
         
     | 
| 37 | 
         
            +
                    )
         
     | 
| 38 | 
         | 
| 39 | 
         
             
                top_widget.upload_button.clicked.connect(upload_logs)
         
     | 
| 40 | 
         | 
| 
         | 
|
| 44 | 
         
             
                        return
         
     | 
| 45 | 
         
             
                    player_id = parser.name2id[player_name]
         
     | 
| 46 | 
         
             
                    parser.current_player = player_id
         
     | 
| 47 | 
         
            +
                    school = parser.players[player_id]
         
     | 
| 48 | 
         
             
                    """ Update config """
         
     | 
| 49 | 
         
             
                    config_choices = list(CONFIG.get(school.school, {}))
         
     | 
| 50 | 
         
             
                    config_widget.config_select.set_items(config_choices, default_index=-1)
         
     | 
    	
        requirements.txt
    CHANGED
    
    | 
         @@ -1,3 +1 @@ 
     | 
|
| 1 | 
         
            -
            pyside6==6.7.0
         
     | 
| 2 | 
         
            -
            tqdm==4.66.2
         
     | 
| 3 | 
         
            -
            requests==2.31.0
         
     | 
| 
         | 
|
| 1 | 
         
            +
            pyside6==6.7.0
         
     | 
| 
         | 
|
| 
         | 
    	
        schools/__init__.py
    CHANGED
    
    | 
         @@ -7,7 +7,7 @@ from base.gain import Gain 
     | 
|
| 7 | 
         
             
            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, hua_jian_you
         
     | 
| 12 | 
         
             
            from schools import wu_fang, bing_xin_jue, mo_wen
         
     | 
| 13 | 
         | 
| 
         @@ -132,6 +132,14 @@ SUPPORT_SCHOOL = { 
     | 
|
| 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,
         
     | 
| 
         | 
|
| 7 | 
         
             
            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, fen_shan_jing
         
     | 
| 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 | 
         | 
| 
         | 
|
| 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 | 
         
            +
                10390: School(
         
     | 
| 136 | 
         
            +
                    school="苍云", major="身法", kind="外功", attribute=fen_shan_jing.FenShanJing, formation="锋凌横绝阵",
         
     | 
| 137 | 
         
            +
                    skills=fen_shan_jing.SKILLS, buffs=fen_shan_jing.BUFFS, prepare=fen_shan_jing.prepare,
         
     | 
| 138 | 
         
            +
                    talent_gains=fen_shan_jing.TALENT_GAINS, talents=fen_shan_jing.TALENTS,
         
     | 
| 139 | 
         
            +
                    talent_decoder=fen_shan_jing.TALENT_DECODER, talent_encoder=fen_shan_jing.TALENT_ENCODER,
         
     | 
| 140 | 
         
            +
                    recipe_gains=fen_shan_jing.RECIPE_GAINS, recipes=fen_shan_jing.RECIPES,
         
     | 
| 141 | 
         
            +
                    gains=fen_shan_jing.GAINS, display_attrs={"agility": "身法", **PHYSICAL_DISPLAY_ATTRS}
         
     | 
| 142 | 
         
            +
                ),
         
     | 
| 143 | 
         
             
                10447: School(
         
     | 
| 144 | 
         
             
                    school="长歌", major="根骨", kind="内功", attribute=mo_wen.MoWen, formation="万籁金弦阵",
         
     | 
| 145 | 
         
             
                    skills=mo_wen.SKILLS, buffs=mo_wen.BUFFS, prepare=mo_wen.prepare,
         
     | 
    	
        schools/bing_xin_jue/__init__.py
    CHANGED
    
    | 
         @@ -7,5 +7,5 @@ from schools.bing_xin_jue.attribute import BingXinJue 
     | 
|
| 7 | 
         | 
| 8 | 
         | 
| 9 | 
         
             
            def prepare(self, player_id):
         
     | 
| 10 | 
         
            -
                self. 
     | 
| 11 | 
         
            -
                self. 
     | 
| 
         | 
|
| 7 | 
         | 
| 8 | 
         | 
| 9 | 
         
             
            def prepare(self, player_id):
         
     | 
| 10 | 
         
            +
                self.player_buffs[player_id][(409, 21)] = 10
         
     | 
| 11 | 
         
            +
                self.player_buffs[player_id][(17969, 1)] = 1
         
     | 
    	
        schools/fen_shan_jing/__init__.py
    ADDED
    
    | 
         @@ -0,0 +1,10 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from schools.fen_shan_jing.skills import SKILLS
         
     | 
| 2 | 
         
            +
            from schools.fen_shan_jing.buffs import BUFFS
         
     | 
| 3 | 
         
            +
            from schools.fen_shan_jing.talents import TALENT_GAINS, TALENTS, TALENT_DECODER, TALENT_ENCODER
         
     | 
| 4 | 
         
            +
            from schools.fen_shan_jing.recipes import RECIPE_GAINS, RECIPES
         
     | 
| 5 | 
         
            +
            from schools.fen_shan_jing.gains import GAINS
         
     | 
| 6 | 
         
            +
            from schools.fen_shan_jing.attribute import FenShanJing
         
     | 
| 7 | 
         
            +
             
     | 
| 8 | 
         
            +
             
     | 
| 9 | 
         
            +
            def prepare(self, player_id):
         
     | 
| 10 | 
         
            +
                pass
         
     | 
    	
        schools/fen_shan_jing/attribute.py
    ADDED
    
    | 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from base.attribute import PhysicalAttribute
         
     | 
| 2 | 
         
            +
            from base.constant import *
         
     | 
| 3 | 
         
            +
             
     | 
| 4 | 
         
            +
             
     | 
| 5 | 
         
            +
            class FenShanJing(PhysicalAttribute):
         
     | 
| 6 | 
         
            +
                AGILITY_TO_ATTACK_POWER = 1485 / BINARY_SCALE
         
     | 
| 7 | 
         
            +
                AGILITY_TO_CRITICAL_STRIKE = 594 / BINARY_SCALE
         
     | 
| 8 | 
         
            +
             
     | 
| 9 | 
         
            +
                def __init__(self):
         
     | 
| 10 | 
         
            +
                    super().__init__()
         
     | 
| 11 | 
         
            +
                    self.physical_attack_power_base += 3277
         
     | 
| 12 | 
         
            +
                    self.physical_critical_strike_base += 2929
         
     | 
| 13 | 
         
            +
                    self.pve_addition += 82
         
     | 
| 14 | 
         
            +
             
     | 
| 15 | 
         
            +
                @property
         
     | 
| 16 | 
         
            +
                def extra_physical_attack_power(self):
         
     | 
| 17 | 
         
            +
                    return int(self.agility * self.AGILITY_TO_ATTACK_POWER)
         
     | 
| 18 | 
         
            +
             
     | 
| 19 | 
         
            +
                @property
         
     | 
| 20 | 
         
            +
                def extra_physical_critical_strike(self):
         
     | 
| 21 | 
         
            +
                    return int(self.agility * self.AGILITY_TO_CRITICAL_STRIKE)
         
     | 
    	
        schools/fen_shan_jing/buffs.py
    ADDED
    
    | 
         @@ -0,0 +1,36 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from typing import Dict
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            from base.buff import Buff
         
     | 
| 4 | 
         
            +
            from general.buffs import GENERAL_BUFFS
         
     | 
| 5 | 
         
            +
             
     | 
| 6 | 
         
            +
            BUFFS: Dict[int, Buff | dict] = {
         
     | 
| 7 | 
         
            +
                16025: {
         
     | 
| 8 | 
         
            +
                    "buff_name": "雷引",
         
     | 
| 9 | 
         
            +
                    "activate": False,
         
     | 
| 10 | 
         
            +
                    "gain_attributes": {
         
     | 
| 11 | 
         
            +
                        "physical_critical_strike_gain": 400,
         
     | 
| 12 | 
         
            +
                        "physical_critical_power_gain": 41
         
     | 
| 13 | 
         
            +
                    }
         
     | 
| 14 | 
         
            +
                },
         
     | 
| 15 | 
         
            +
                26857: {
         
     | 
| 16 | 
         
            +
                    "buff_name": "承契",
         
     | 
| 17 | 
         
            +
                    "gain_attributes": {
         
     | 
| 18 | 
         
            +
                        "all_damage_addition": 62
         
     | 
| 19 | 
         
            +
                    }
         
     | 
| 20 | 
         
            +
                },
         
     | 
| 21 | 
         
            +
                27099: {
         
     | 
| 22 | 
         
            +
                    "buff_name": "诸怀",
         
     | 
| 23 | 
         
            +
                    "gain_attributes": {
         
     | 
| 24 | 
         
            +
                        "all_shield_ignore": 205,
         
     | 
| 25 | 
         
            +
                        "physical_attack_power_gain": 102
         
     | 
| 26 | 
         
            +
                    }
         
     | 
| 27 | 
         
            +
                },
         
     | 
| 28 | 
         
            +
            }
         
     | 
| 29 | 
         
            +
             
     | 
| 30 | 
         
            +
            for buff_id, detail in BUFFS.items():
         
     | 
| 31 | 
         
            +
                BUFFS[buff_id] = Buff(buff_id)
         
     | 
| 32 | 
         
            +
                for attr, value in detail.items():
         
     | 
| 33 | 
         
            +
                    setattr(BUFFS[buff_id], attr, value)
         
     | 
| 34 | 
         
            +
             
     | 
| 35 | 
         
            +
            for buff_id, buff in GENERAL_BUFFS.items():
         
     | 
| 36 | 
         
            +
                BUFFS[buff_id] = buff
         
     | 
    	
        schools/fen_shan_jing/gains.py
    ADDED
    
    | 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 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 | 
         
            +
             
     | 
| 6 | 
         
            +
            GAINS = {
         
     | 
| 7 | 
         
            +
                2568: CriticalSet(16025),
         
     | 
| 8 | 
         
            +
                5438: damage_addition_recipe([35987], 102),
         
     | 
| 9 | 
         
            +
                5461: damage_addition_recipe([36157], 51),
         
     | 
| 10 | 
         
            +
                5462: damage_addition_recipe([35987], 51),
         
     | 
| 11 | 
         
            +
                5463: critical_strike_recipe([36157], 500),
         
     | 
| 12 | 
         
            +
                2572: Gain(),
         
     | 
| 13 | 
         
            +
                2571: Gain(),
         
     | 
| 14 | 
         
            +
                17470: Gain(),
         
     | 
| 15 | 
         
            +
                17471: Gain(),
         
     | 
| 16 | 
         
            +
                **EQUIPMENT_GAINS,
         
     | 
| 17 | 
         
            +
            }
         
     | 
    	
        schools/fen_shan_jing/recipes.py
    ADDED
    
    | 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from typing import Dict, List
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            from base.gain import Gain
         
     | 
| 4 | 
         
            +
            from base.recipe import damage_addition_recipe, critical_strike_recipe, pve_addition_recipe
         
     | 
| 5 | 
         
            +
             
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
            RECIPE_GAINS: Dict[str, Dict[str, Gain]] = {
         
     | 
| 8 | 
         
            +
                "劲风簇": {
         
     | 
| 9 | 
         
            +
                    "4%会心": critical_strike_recipe([35866], 400),
         
     | 
| 10 | 
         
            +
                    "3%伤害": damage_addition_recipe([35866], 31),
         
     | 
| 11 | 
         
            +
                    "3%会心": critical_strike_recipe([35866], 300),
         
     | 
| 12 | 
         
            +
                    "2%伤害": damage_addition_recipe([35866], 21)
         
     | 
| 13 | 
         
            +
                },
         
     | 
| 14 | 
         
            +
                "饮羽簇": {
         
     | 
| 15 | 
         
            +
                    "15%伤害": pve_addition_recipe([35987], 154),
         
     | 
| 16 | 
         
            +
                    "4%会心": critical_strike_recipe([35987], 400),
         
     | 
| 17 | 
         
            +
                    "3%伤害": damage_addition_recipe([35987], 31),
         
     | 
| 18 | 
         
            +
                    "3%会心": critical_strike_recipe([35987], 300),
         
     | 
| 19 | 
         
            +
                    "2%伤害": damage_addition_recipe([35987], 21)
         
     | 
| 20 | 
         
            +
                },
         
     | 
| 21 | 
         
            +
            }
         
     | 
| 22 | 
         
            +
             
     | 
| 23 | 
         
            +
            RECIPES: Dict[str, List[str]] = {
         
     | 
| 24 | 
         
            +
                "劲风簇": ["4%会心", "3%伤害", "3%会心", "2%伤害"],
         
     | 
| 25 | 
         
            +
                "饮羽簇": ["15%伤害", "4%会心", "3%伤害", "3%会心", "2%伤害"],
         
     | 
| 26 | 
         
            +
            }
         
     | 
    	
        schools/fen_shan_jing/skills.py
    ADDED
    
    | 
         @@ -0,0 +1,159 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from typing import Dict
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            from base.constant import DOT_DAMAGE_SCALE, FRAME_PER_SECOND
         
     | 
| 4 | 
         
            +
            from base.skill import Skill, DotSkill, DotConsumeSkill, PhysicalDamage, PhysicalDotDamage
         
     | 
| 5 | 
         
            +
            from general.skills import GENERAL_SKILLS
         
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
            SKILLS: Dict[int, Skill | dict] = {
         
     | 
| 8 | 
         
            +
                36177: {
         
     | 
| 9 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 10 | 
         
            +
                    "skill_name": "破",
         
     | 
| 11 | 
         
            +
                    "surplus_cof": [
         
     | 
| 12 | 
         
            +
                        1048576 * (0.3 - 1),
         
     | 
| 13 | 
         
            +
                        1048576 * (0.3 - 1)
         
     | 
| 14 | 
         
            +
                    ]
         
     | 
| 15 | 
         
            +
                },
         
     | 
| 16 | 
         
            +
                35894: {
         
     | 
| 17 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 18 | 
         
            +
                    "skill_name": "风矢",
         
     | 
| 19 | 
         
            +
                    "attack_power_cof": 16,
         
     | 
| 20 | 
         
            +
                    "weapon_damage_cof": 1024,
         
     | 
| 21 | 
         
            +
                    "skill_damage_addition": 205
         
     | 
| 22 | 
         
            +
                },
         
     | 
| 23 | 
         
            +
                35866: {
         
     | 
| 24 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 25 | 
         
            +
                    "skill_name": "劲风簇",
         
     | 
| 26 | 
         
            +
                    "damage_base": [35, 70, 105, 140, 157, 175, 193, 210, 228, 245, 263, 280, 298, 315, 333],
         
     | 
| 27 | 
         
            +
                    "damage_rand": 5,
         
     | 
| 28 | 
         
            +
                    "attack_power_cof": [25 * 0.9 * 0.9 * 0.95] * 3 +
         
     | 
| 29 | 
         
            +
                                        [(25 + (i - 4) * 10) * 0.9 * 0.9 * 0.95 for i in range(4, 15)] +
         
     | 
| 30 | 
         
            +
                                        [175 * 0.9 * 0.9 * 0.95],
         
     | 
| 31 | 
         
            +
                    "weapon_damage_cof": 1024
         
     | 
| 32 | 
         
            +
                },
         
     | 
| 33 | 
         
            +
                35987: {
         
     | 
| 34 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 35 | 
         
            +
                    "skill_name": "饮羽簇",
         
     | 
| 36 | 
         
            +
                    "damage_base": [77, 154, 321, 308, 347, 385, 424, 462, 501, 539, 578, 616, 655, 693, 732],
         
     | 
| 37 | 
         
            +
                    "damage_rand": [5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10],
         
     | 
| 38 | 
         
            +
                    "attack_power_cof": [66 * 0.9 * 0.9 * 0.95 * 0.9 * 0.95] * 3 +
         
     | 
| 39 | 
         
            +
                                        [(66 + (i - 4) * 38) * 0.9 * 0.9 * 0.95 * 0.9 * 0.95 for i in range(4, 15)] +
         
     | 
| 40 | 
         
            +
                                        [552 * 0.9 * 0.9 * 0.95 * 0.9 * 0.95],
         
     | 
| 41 | 
         
            +
                    "weapon_damage_cof": 2048
         
     | 
| 42 | 
         
            +
                },
         
     | 
| 43 | 
         
            +
                36056: {
         
     | 
| 44 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 45 | 
         
            +
                    "skill_name": "践踏",
         
     | 
| 46 | 
         
            +
                    "damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296],
         
     | 
| 47 | 
         
            +
                    "damage_rand": 20,
         
     | 
| 48 | 
         
            +
                    "attack_power_cof": [70 * 1.05] * 2 +
         
     | 
| 49 | 
         
            +
                                        [(70 + (i - 3) * 58) * 1.05 for i in range(3, 11)] +
         
     | 
| 50 | 
         
            +
                                        [607 * 1.05],
         
     | 
| 51 | 
         
            +
                    "skill_damage_addition": 62
         
     | 
| 52 | 
         
            +
                },
         
     | 
| 53 | 
         
            +
                36057: {
         
     | 
| 54 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 55 | 
         
            +
                    "skill_name": "重击",
         
     | 
| 56 | 
         
            +
                    "damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296],
         
     | 
| 57 | 
         
            +
                    "damage_rand": 20,
         
     | 
| 58 | 
         
            +
                    "attack_power_cof": [33 * 1.05] * 2 +
         
     | 
| 59 | 
         
            +
                                        [(33 + (i - 3) * 26) * 1.05 for i in range(3, 11)] +
         
     | 
| 60 | 
         
            +
                                        [276 * 1.05],
         
     | 
| 61 | 
         
            +
                    "skill_damage_addition": 62
         
     | 
| 62 | 
         
            +
                },
         
     | 
| 63 | 
         
            +
                36111: {
         
     | 
| 64 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 65 | 
         
            +
                    "skill_name": "攻击",
         
     | 
| 66 | 
         
            +
                    "damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296],
         
     | 
| 67 | 
         
            +
                    "damage_rand": 20,
         
     | 
| 68 | 
         
            +
                    "attack_power_cof": [33 * 1.05] * 2 +
         
     | 
| 69 | 
         
            +
                                        [(33 + (i - 3) * 26) * 1.05 for i in range(3, 11)] +
         
     | 
| 70 | 
         
            +
                                        [276 * 1.05],
         
     | 
| 71 | 
         
            +
                    "skill_damage_addition": 62
         
     | 
| 72 | 
         
            +
                },
         
     | 
| 73 | 
         
            +
                36112: {
         
     | 
| 74 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 75 | 
         
            +
                    "skill_name": "攻击",
         
     | 
| 76 | 
         
            +
                    "damage_base": [48, 132, 216, 300, 384, 468, 552, 636, 720, 804, 296],
         
     | 
| 77 | 
         
            +
                    "damage_rand": 20,
         
     | 
| 78 | 
         
            +
                    "attack_power_cof": [99 * 1.05] * 2 +
         
     | 
| 79 | 
         
            +
                                        [(99 + (i - 3) * 26) * 1.05 for i in range(3, 11)] +
         
     | 
| 80 | 
         
            +
                                        [828 * 1.05],
         
     | 
| 81 | 
         
            +
                    "skill_damage_addition": 62
         
     | 
| 82 | 
         
            +
                },
         
     | 
| 83 | 
         
            +
                36113: {
         
     | 
| 84 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 85 | 
         
            +
                    "skill_name": "攻击",
         
     | 
| 86 | 
         
            +
                    "damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296],
         
     | 
| 87 | 
         
            +
                    "damage_rand": 20,
         
     | 
| 88 | 
         
            +
                    "attack_power_cof": [70 * 1.05] * 2 +
         
     | 
| 89 | 
         
            +
                                        [(70 + (i - 3) * 26) * 1.05 for i in range(3, 11)] +
         
     | 
| 90 | 
         
            +
                                        [607 * 1.05],
         
     | 
| 91 | 
         
            +
                    "skill_damage_addition": 62
         
     | 
| 92 | 
         
            +
                },
         
     | 
| 93 | 
         
            +
                36114: {
         
     | 
| 94 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 95 | 
         
            +
                    "skill_name": "攻击",
         
     | 
| 96 | 
         
            +
                    "damage_base": [16, 44, 72, 100, 128, 156, 184, 212, 240, 268, 296],
         
     | 
| 97 | 
         
            +
                    "damage_rand": 20,
         
     | 
| 98 | 
         
            +
                    "attack_power_cof": [23 * 1.05] * 2 +
         
     | 
| 99 | 
         
            +
                                        [(23 + (i - 3) * 26) * 1.05 for i in range(3, 11)] +
         
     | 
| 100 | 
         
            +
                                        [165 * 1.05],
         
     | 
| 101 | 
         
            +
                    "skill_damage_addition": 62
         
     | 
| 102 | 
         
            +
                },
         
     | 
| 103 | 
         
            +
                36157: {
         
     | 
| 104 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 105 | 
         
            +
                    "skill_name": "标鹄",
         
     | 
| 106 | 
         
            +
                    "damage_base": 30,
         
     | 
| 107 | 
         
            +
                    "damage_rand": 20,
         
     | 
| 108 | 
         
            +
                    "attack_power_cof": 512 * 1.15 * 0.9 * 0.95
         
     | 
| 109 | 
         
            +
                },
         
     | 
| 110 | 
         
            +
                26856: {
         
     | 
| 111 | 
         
            +
                    "skill_class": PhysicalDotDamage,
         
     | 
| 112 | 
         
            +
                    "skill_name": "贯穿(DOT)",
         
     | 
| 113 | 
         
            +
                    "damage_base": 32,
         
     | 
| 114 | 
         
            +
                    "attack_power_cof": 215 * 0.7 * 1.15 * 0.9 * 0.9 * 0.9,
         
     | 
| 115 | 
         
            +
                    "interval": FRAME_PER_SECOND * DOT_DAMAGE_SCALE / 4
         
     | 
| 116 | 
         
            +
                },
         
     | 
| 117 | 
         
            +
                36165: {
         
     | 
| 118 | 
         
            +
                    "skill_class": DotConsumeSkill,
         
     | 
| 119 | 
         
            +
                    "skill_name": "贯穿",
         
     | 
| 120 | 
         
            +
                    "bind_skill": 26856,
         
     | 
| 121 | 
         
            +
                    "tick": 3
         
     | 
| 122 | 
         
            +
                },
         
     | 
| 123 | 
         
            +
                35771: {
         
     | 
| 124 | 
         
            +
                    "skill_class": DotSkill,
         
     | 
| 125 | 
         
            +
                    "skill_name": "贯穿",
         
     | 
| 126 | 
         
            +
                    "bind_skill": 26856,
         
     | 
| 127 | 
         
            +
                    "max_stack": 6,
         
     | 
| 128 | 
         
            +
                    "tick": 4
         
     | 
| 129 | 
         
            +
                },
         
     | 
| 130 | 
         
            +
                36453: {
         
     | 
| 131 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 132 | 
         
            +
                    "skill_name": "朝仪万汇",
         
     | 
| 133 | 
         
            +
                    "damage_base": 37,
         
     | 
| 134 | 
         
            +
                    "damage_rand": 5,
         
     | 
| 135 | 
         
            +
                    "attack_power_cof": 215
         
     | 
| 136 | 
         
            +
                },
         
     | 
| 137 | 
         
            +
                36579: {
         
     | 
| 138 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 139 | 
         
            +
                    "skill_name": "劲风簇·神兵",
         
     | 
| 140 | 
         
            +
                    "damage_base": 20,
         
     | 
| 141 | 
         
            +
                    "damage_rand": 2,
         
     | 
| 142 | 
         
            +
                    "attack_power_cof": 60
         
     | 
| 143 | 
         
            +
                },
         
     | 
| 144 | 
         
            +
                36580: {
         
     | 
| 145 | 
         
            +
                    "skill_class": PhysicalDamage,
         
     | 
| 146 | 
         
            +
                    "skill_name": "月弦激星",
         
     | 
| 147 | 
         
            +
                    "damage_base": 20,
         
     | 
| 148 | 
         
            +
                    "damage_rand": 2,
         
     | 
| 149 | 
         
            +
                    "attack_power_cof": 390
         
     | 
| 150 | 
         
            +
                }
         
     | 
| 151 | 
         
            +
            }
         
     | 
| 152 | 
         
            +
             
     | 
| 153 | 
         
            +
            for skill_id, detail in SKILLS.items():
         
     | 
| 154 | 
         
            +
                SKILLS[skill_id] = detail.pop('skill_class')(skill_id)
         
     | 
| 155 | 
         
            +
                for attr, value in detail.items():
         
     | 
| 156 | 
         
            +
                    setattr(SKILLS[skill_id], attr, value)
         
     | 
| 157 | 
         
            +
             
     | 
| 158 | 
         
            +
            for skill_id, skill in GENERAL_SKILLS.items():
         
     | 
| 159 | 
         
            +
                SKILLS[skill_id] = skill
         
     | 
    	
        schools/fen_shan_jing/talents.py
    ADDED
    
    | 
         @@ -0,0 +1,95 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from typing import Dict
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            from base.attribute import Attribute
         
     | 
| 4 | 
         
            +
            from base.gain import Gain
         
     | 
| 5 | 
         
            +
            from base.skill import Skill
         
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
             
     | 
| 8 | 
         
            +
            class 彤弓(Gain):
         
     | 
| 9 | 
         
            +
                def add_skills(self, skills: Dict[int, Skill]):
         
     | 
| 10 | 
         
            +
                    skills[35866].skill_critical_strike += 1000
         
     | 
| 11 | 
         
            +
                    skills[35866].skill_critical_power += 102
         
     | 
| 12 | 
         
            +
             
     | 
| 13 | 
         
            +
                def sub_skills(self, skills: Dict[int, Skill]):
         
     | 
| 14 | 
         
            +
                    skills[35866].skill_critical_strike -= 1000
         
     | 
| 15 | 
         
            +
                    skills[35866].skill_critical_power -= 102
         
     | 
| 16 | 
         
            +
             
     | 
| 17 | 
         
            +
             
     | 
| 18 | 
         
            +
            class 素矰(Gain):
         
     | 
| 19 | 
         
            +
                def add_skills(self, skills: Dict[int, Skill]):
         
     | 
| 20 | 
         
            +
                    skills[26856].attack_power_cof_gain *= 1.05
         
     | 
| 21 | 
         
            +
             
     | 
| 22 | 
         
            +
                def sub_skills(self, skills: Dict[int, Skill]):
         
     | 
| 23 | 
         
            +
                    skills[26856].attack_power_cof_gain /= 1.05
         
     | 
| 24 | 
         
            +
             
     | 
| 25 | 
         
            +
             
     | 
| 26 | 
         
            +
            class 孰湖(Gain):
         
     | 
| 27 | 
         
            +
                def add_skills(self, skills: Dict[int, Skill]):
         
     | 
| 28 | 
         
            +
                    for skill_id in (36056, 36057, 36111, 36112, 36113, 36114):
         
     | 
| 29 | 
         
            +
                        skills[skill_id].skill_damage_addition += 62
         
     | 
| 30 | 
         
            +
             
     | 
| 31 | 
         
            +
                def sub_skills(self, skills: Dict[int, Skill]):
         
     | 
| 32 | 
         
            +
                    for skill_id in (36056, 36057, 36111, 36112, 36113, 36114):
         
     | 
| 33 | 
         
            +
                        skills[skill_id].skill_damage_addition -= 62
         
     | 
| 34 | 
         
            +
             
     | 
| 35 | 
         
            +
             
     | 
| 36 | 
         
            +
            class 桑柘(Gain):
         
     | 
| 37 | 
         
            +
                def add_skills(self, skills: Dict[int, Skill]):
         
     | 
| 38 | 
         
            +
                    skills[35771].tick += 1
         
     | 
| 39 | 
         
            +
             
     | 
| 40 | 
         
            +
                def sub_skills(self, skills: Dict[int, Skill]):
         
     | 
| 41 | 
         
            +
                    skills[35771].tick -= 1
         
     | 
| 42 | 
         
            +
             
     | 
| 43 | 
         
            +
             
     | 
| 44 | 
         
            +
            class 卢令(Gain):
         
     | 
| 45 | 
         
            +
                def add_attribute(self, attribute: Attribute):
         
     | 
| 46 | 
         
            +
                    attribute.agility_gain += 102
         
     | 
| 47 | 
         
            +
             
     | 
| 48 | 
         
            +
                def sub_attribute(self, attribute: Attribute):
         
     | 
| 49 | 
         
            +
                    attribute.agility_gain -= 102
         
     | 
| 50 | 
         
            +
             
     | 
| 51 | 
         
            +
             
     | 
| 52 | 
         
            +
            class 贯侯(Gain):
         
     | 
| 53 | 
         
            +
                def add_skills(self, skills: Dict[int, Skill]):
         
     | 
| 54 | 
         
            +
                    skills[36157].skill_pve_addition += 205
         
     | 
| 55 | 
         
            +
             
     | 
| 56 | 
         
            +
                def sub_skills(self, skills: Dict[int, Skill]):
         
     | 
| 57 | 
         
            +
                    skills[36157].skill_pve_addition -= 205
         
     | 
| 58 | 
         
            +
             
     | 
| 59 | 
         
            +
             
     | 
| 60 | 
         
            +
            TALENT_GAINS: Dict[int, Gain] = {
         
     | 
| 61 | 
         
            +
                35715: 素矰("素矰"),
         
     | 
| 62 | 
         
            +
                35714: 彤弓("彤弓"),
         
     | 
| 63 | 
         
            +
                35718: Gain("棘矢"),
         
     | 
| 64 | 
         
            +
                35719: 孰湖("孰湖"),
         
     | 
| 65 | 
         
            +
                35721: Gain("襄尺"),
         
     | 
| 66 | 
         
            +
                35725: Gain("长右"),
         
     | 
| 67 | 
         
            +
                35729: Gain("鹿蜀"),
         
     | 
| 68 | 
         
            +
                35736: 桑柘("桑柘"),
         
     | 
| 69 | 
         
            +
                35733: Gain("诸怀"),
         
     | 
| 70 | 
         
            +
                35737: Gain("于狩"),
         
     | 
| 71 | 
         
            +
                35745: 卢令("卢令"),
         
     | 
| 72 | 
         
            +
                35749: Gain("托月"),
         
     | 
| 73 | 
         
            +
                35751: Gain("佩弦"),
         
     | 
| 74 | 
         
            +
                35754: Gain("丛云隐月"),
         
     | 
| 75 | 
         
            +
                35757: 贯侯("贯侯"),
         
     | 
| 76 | 
         
            +
                35764: Gain("朝仪万汇"),
         
     | 
| 77 | 
         
            +
                35761: Gain("朱厌")
         
     | 
| 78 | 
         
            +
            }
         
     | 
| 79 | 
         
            +
             
     | 
| 80 | 
         
            +
            TALENTS = [
         
     | 
| 81 | 
         
            +
                [35715, 35714],
         
     | 
| 82 | 
         
            +
                [35718, 35719],
         
     | 
| 83 | 
         
            +
                [35721],
         
     | 
| 84 | 
         
            +
                [35725],
         
     | 
| 85 | 
         
            +
                [35729],
         
     | 
| 86 | 
         
            +
                [35736, 35733],
         
     | 
| 87 | 
         
            +
                [35737],
         
     | 
| 88 | 
         
            +
                [35745],
         
     | 
| 89 | 
         
            +
                [35749],
         
     | 
| 90 | 
         
            +
                [35751, 35754],
         
     | 
| 91 | 
         
            +
                [35757],
         
     | 
| 92 | 
         
            +
                [35764, 35761]
         
     | 
| 93 | 
         
            +
            ]
         
     | 
| 94 | 
         
            +
            TALENT_DECODER = {talent_id: talent.gain_name for talent_id, talent in TALENT_GAINS.items()}
         
     | 
| 95 | 
         
            +
            TALENT_ENCODER = {v: k for k, v in TALENT_DECODER.items()}
         
     | 
    	
        schools/gu_feng_jue/buffs.py
    CHANGED
    
    | 
         @@ -2,11 +2,6 @@ from base.buff import Buff 
     | 
|
| 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": "朔气",
         
     | 
| 
         @@ -52,7 +47,7 @@ BUFFS = { 
     | 
|
| 52 | 
         
             
                    "activate": False,
         
     | 
| 53 | 
         
             
                    "gain_skills": {
         
     | 
| 54 | 
         
             
                        24443: {
         
     | 
| 55 | 
         
            -
                            "attack_power_cof_gain": 0.1
         
     | 
| 56 | 
         
             
                        }
         
     | 
| 57 | 
         
             
                    }
         
     | 
| 58 | 
         
             
                }
         
     | 
| 
         | 
|
| 2 | 
         
             
            from general.buffs import GENERAL_BUFFS
         
     | 
| 3 | 
         | 
| 4 | 
         | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 5 | 
         
             
            BUFFS = {
         
     | 
| 6 | 
         
             
                11378: {
         
     | 
| 7 | 
         
             
                    "buff_name": "朔气",
         
     | 
| 
         | 
|
| 47 | 
         
             
                    "activate": False,
         
     | 
| 48 | 
         
             
                    "gain_skills": {
         
     | 
| 49 | 
         
             
                        24443: {
         
     | 
| 50 | 
         
            +
                            "attack_power_cof_gain": [1 + 0.1 * (i + 1) for i in range(6)]
         
     | 
| 51 | 
         
             
                        }
         
     | 
| 52 | 
         
             
                    }
         
     | 
| 53 | 
         
             
                }
         
     | 
    	
        schools/gu_feng_jue/skills.py
    CHANGED
    
    | 
         @@ -6,13 +6,15 @@ from general.skills import GENERAL_SKILLS 
     | 
|
| 6 | 
         | 
| 7 | 
         | 
| 8 | 
         
             
            class 横刀断浪流血(Skill):
         
     | 
| 9 | 
         
            -
                def record(self,  
     | 
| 10 | 
         
             
                    bind_skill = self.bind_skill
         
     | 
| 11 | 
         
             
                    bind_buff = self.bind_buff
         
     | 
| 12 | 
         
             
                    parser.current_ticks[bind_skill] = self.tick
         
     | 
| 13 | 
         
             
                    parser.current_stacks[bind_skill] = self.max_stack
         
     | 
| 14 | 
         
            -
                     
     | 
| 15 | 
         
            -
             
     | 
| 
         | 
|
| 
         | 
|
| 16 | 
         | 
| 17 | 
         | 
| 18 | 
         
             
            SKILLS: Dict[int, Skill | dict] = {
         
     | 
| 
         | 
|
| 6 | 
         | 
| 7 | 
         | 
| 8 | 
         
             
            class 横刀断浪流血(Skill):
         
     | 
| 9 | 
         
            +
                def record(self, critical, parser):
         
     | 
| 10 | 
         
             
                    bind_skill = self.bind_skill
         
     | 
| 11 | 
         
             
                    bind_buff = self.bind_buff
         
     | 
| 12 | 
         
             
                    parser.current_ticks[bind_skill] = self.tick
         
     | 
| 13 | 
         
             
                    parser.current_stacks[bind_skill] = self.max_stack
         
     | 
| 14 | 
         
            +
                    for level in range(self.max_stack):
         
     | 
| 15 | 
         
            +
                        parser.current_target_buffs.pop((bind_buff, level + 1), None)
         
     | 
| 16 | 
         
            +
                    parser.current_target_buffs[(bind_buff, self.max_stack)] = 1
         
     | 
| 17 | 
         
            +
                    parser.current_dot_snapshot[bind_skill] = parser.current_player_buffs.copy()
         
     | 
| 18 | 
         | 
| 19 | 
         | 
| 20 | 
         
             
            SKILLS: Dict[int, Skill | dict] = {
         
     | 
    	
        schools/hua_jian_you/buffs.py
    CHANGED
    
    | 
         @@ -38,10 +38,9 @@ BUFFS = { 
     | 
|
| 38 | 
         
             
                },
         
     | 
| 39 | 
         
             
                24599: {
         
     | 
| 40 | 
         
             
                    "buff_name": "雪中行",
         
     | 
| 41 | 
         
            -
                    "stackable": False,
         
     | 
| 42 | 
         
             
                    "gain_attributes": {
         
     | 
| 43 | 
         
            -
                        "magical_attack_power_gain":  
     | 
| 44 | 
         
            -
                        "magical_critical_strike_gain":  
     | 
| 45 | 
         
             
                    },
         
     | 
| 46 | 
         
             
                    "gain_skills": {
         
     | 
| 47 | 
         
             
                        skill_id: {
         
     | 
| 
         @@ -60,7 +59,10 @@ BUFFS = { 
     | 
|
| 60 | 
         
             
                    "buff_name": "青冠",
         
     | 
| 61 | 
         
             
                    "activate": False,
         
     | 
| 62 | 
         
             
                    "gain_attributes": {
         
     | 
| 63 | 
         
            -
                        "global_damage_factor": [ 
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 64 | 
         
             
                    }
         
     | 
| 65 | 
         
             
                },
         
     | 
| 66 | 
         
             
                9722: {
         
     | 
| 
         | 
|
| 38 | 
         
             
                },
         
     | 
| 39 | 
         
             
                24599: {
         
     | 
| 40 | 
         
             
                    "buff_name": "雪中行",
         
     | 
| 
         | 
|
| 41 | 
         
             
                    "gain_attributes": {
         
     | 
| 42 | 
         
            +
                        "magical_attack_power_gain": 102,
         
     | 
| 43 | 
         
            +
                        "magical_critical_strike_gain": 600
         
     | 
| 44 | 
         
             
                    },
         
     | 
| 45 | 
         
             
                    "gain_skills": {
         
     | 
| 46 | 
         
             
                        skill_id: {
         
     | 
| 
         | 
|
| 59 | 
         
             
                    "buff_name": "青冠",
         
     | 
| 60 | 
         
             
                    "activate": False,
         
     | 
| 61 | 
         
             
                    "gain_attributes": {
         
     | 
| 62 | 
         
            +
                        "global_damage_factor": [
         
     | 
| 63 | 
         
            +
                            1.25,
         
     | 
| 64 | 
         
            +
                            2.
         
     | 
| 65 | 
         
            +
                        ]
         
     | 
| 66 | 
         
             
                    }
         
     | 
| 67 | 
         
             
                },
         
     | 
| 68 | 
         
             
                9722: {
         
     | 
    	
        schools/hua_jian_you/recipes.py
    CHANGED
    
    | 
         @@ -26,10 +26,7 @@ RECIPE_GAINS: Dict[str, Dict[str, Gain]] = { 
     | 
|
| 26 | 
         
             
            }
         
     | 
| 27 | 
         | 
| 28 | 
         
             
            RECIPES: Dict[str, List[str]] = {
         
     | 
| 29 | 
         
            -
                " 
     | 
| 30 | 
         
            -
                " 
     | 
| 31 | 
         
            -
                " 
     | 
| 32 | 
         
            -
                "捕风式": ["15%伤害", "10%伤害", "10%伤害"],
         
     | 
| 33 | 
         
            -
                "守缺式": ["5%伤害", "4%伤害", "4%会心", "3%伤害", "3%会心", "2%会心"],
         
     | 
| 34 | 
         
            -
                "拿云式": ["5%伤害", "4%伤害", "3%伤害"],
         
     | 
| 35 | 
         
             
            }
         
     | 
| 
         | 
|
| 26 | 
         
             
            }
         
     | 
| 27 | 
         | 
| 28 | 
         
             
            RECIPES: Dict[str, List[str]] = {
         
     | 
| 29 | 
         
            +
                "阳明指": ["4%伤害", "3%伤害", "3%会心", "2%会心"],
         
     | 
| 30 | 
         
            +
                "芙蓉并蒂": ["5%伤害", "4%伤害", "4%会心", "3%伤害", "3%会心", "2%会心"],
         
     | 
| 31 | 
         
            +
                "快雪时晴": ["5%伤害", "4%伤害", "3%伤害"],
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 32 | 
         
             
            }
         
     | 
    	
        schools/hua_jian_you/skills.py
    CHANGED
    
    | 
         @@ -5,17 +5,19 @@ from general.skills import GENERAL_SKILLS 
     | 
|
| 5 | 
         | 
| 6 | 
         | 
| 7 | 
         
             
            class DotConsumeSkill(Skill):
         
     | 
| 8 | 
         
            -
                 
     | 
| 9 | 
         | 
| 10 | 
         
            -
                def record(self,  
     | 
| 11 | 
         
             
                    if not (last_dot := parser.current_last_dot.pop(self.bind_skill, None)):
         
     | 
| 12 | 
         
             
                        return
         
     | 
| 13 | 
         
            -
                    if skill_level not in self. 
     | 
| 14 | 
         
             
                        return
         
     | 
| 15 | 
         | 
| 16 | 
         
             
                    skill_tuple, status_tuple = last_dot
         
     | 
| 17 | 
         
            -
                    if buff_level := self. 
     | 
| 18 | 
         
            -
                         
     | 
| 
         | 
|
| 
         | 
|
| 19 | 
         
             
                    else:
         
     | 
| 20 | 
         
             
                        new_status_tuple = status_tuple
         
     | 
| 21 | 
         
             
                    skill_id, skill_level, skill_stack = skill_tuple
         
     | 
| 
         @@ -31,15 +33,15 @@ class GeneraConsumeSkill(DotConsumeSkill): 
     | 
|
| 31 | 
         
             
                bind_skills = {
         
     | 
| 32 | 
         
             
                    **{i + 9: skill_id for i, skill_id in enumerate([714, 666, 711, 24158])}
         
     | 
| 33 | 
         
             
                }
         
     | 
| 34 | 
         
            -
                 
     | 
| 35 | 
         
             
                    **{i + 9: 1 for i in range(4)}
         
     | 
| 36 | 
         
             
                }
         
     | 
| 37 | 
         | 
| 38 | 
         
            -
                def record(self,  
     | 
| 39 | 
         
            -
                    if skill_level not in self.bind_skills:
         
     | 
| 40 | 
         
             
                        return
         
     | 
| 41 | 
         
            -
                    self.bind_skill = self.bind_skills[skill_level]
         
     | 
| 42 | 
         
            -
                    super().record( 
     | 
| 43 | 
         | 
| 44 | 
         | 
| 45 | 
         
             
            SKILLS: Dict[int, Skill | dict] = {
         
     | 
| 
         @@ -81,7 +83,7 @@ SKILLS: Dict[int, Skill | dict] = { 
     | 
|
| 81 | 
         
             
                    "skill_name": "兰摧玉折",
         
     | 
| 82 | 
         
             
                    "bind_skill": 711,
         
     | 
| 83 | 
         
             
                    "tick": 99,
         
     | 
| 84 | 
         
            -
                    " 
     | 
| 85 | 
         
             
                },
         
     | 
| 86 | 
         
             
                714: {
         
     | 
| 87 | 
         
             
                    "skill_class": MagicalDotDamage,
         
     | 
| 
         @@ -106,13 +108,15 @@ SKILLS: Dict[int, Skill | dict] = { 
     | 
|
| 106 | 
         
             
                    "skill_name": "钟林毓秀",
         
     | 
| 107 | 
         
             
                    "bind_skill": 714,
         
     | 
| 108 | 
         
             
                    "tick": 99,
         
     | 
| 109 | 
         
            -
                    " 
     | 
| 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, 
     | 
| 115 | 
         
            -
             
     | 
| 
         | 
|
| 
         | 
|
| 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],
         
     | 
| 
         @@ -140,7 +144,7 @@ SKILLS: Dict[int, Skill | dict] = { 
     | 
|
| 140 | 
         
             
                    "skill_name": "商阳指",
         
     | 
| 141 | 
         
             
                    "bind_skill": 666,
         
     | 
| 142 | 
         
             
                    "tick": 99,
         
     | 
| 143 | 
         
            -
                    " 
     | 
| 144 | 
         
             
                },
         
     | 
| 145 | 
         
             
                6693: {
         
     | 
| 146 | 
         
             
                    "skill_class": MagicalDamage,
         
     | 
| 
         @@ -196,7 +200,7 @@ SKILLS: Dict[int, Skill | dict] = { 
     | 
|
| 196 | 
         
             
                    "skill_name": "快雪时晴",
         
     | 
| 197 | 
         
             
                    "bind_skill": 24158,
         
     | 
| 198 | 
         
             
                    "tick": 99,
         
     | 
| 199 | 
         
            -
                    " 
     | 
| 200 | 
         
             
                },
         
     | 
| 201 | 
         
             
                601: {
         
     | 
| 202 | 
         
             
                    "skill_class": GeneraConsumeSkill,
         
     | 
| 
         | 
|
| 5 | 
         | 
| 6 | 
         | 
| 7 | 
         
             
            class DotConsumeSkill(Skill):
         
     | 
| 8 | 
         
            +
                bind_buff_levels: dict
         
     | 
| 9 | 
         | 
| 10 | 
         
            +
                def record(self, critical, parser):
         
     | 
| 11 | 
         
             
                    if not (last_dot := parser.current_last_dot.pop(self.bind_skill, None)):
         
     | 
| 12 | 
         
             
                        return
         
     | 
| 13 | 
         
            +
                    if self.skill_level not in self.bind_buff_levels:
         
     | 
| 14 | 
         
             
                        return
         
     | 
| 15 | 
         | 
| 16 | 
         
             
                    skill_tuple, status_tuple = last_dot
         
     | 
| 17 | 
         
            +
                    if buff_level := self.bind_buff_levels[self.skill_level]:
         
     | 
| 18 | 
         
            +
                        current_status, snapshot_status, target_status = status_tuple
         
     | 
| 19 | 
         
            +
                        new_target_status = (*target_status, (-32489, buff_level, 1))
         
     | 
| 20 | 
         
            +
                        new_status_tuple = (current_status, snapshot_status, new_target_status)
         
     | 
| 21 | 
         
             
                    else:
         
     | 
| 22 | 
         
             
                        new_status_tuple = status_tuple
         
     | 
| 23 | 
         
             
                    skill_id, skill_level, skill_stack = skill_tuple
         
     | 
| 
         | 
|
| 33 | 
         
             
                bind_skills = {
         
     | 
| 34 | 
         
             
                    **{i + 9: skill_id for i, skill_id in enumerate([714, 666, 711, 24158])}
         
     | 
| 35 | 
         
             
                }
         
     | 
| 36 | 
         
            +
                bind_buff_levels = {
         
     | 
| 37 | 
         
             
                    **{i + 9: 1 for i in range(4)}
         
     | 
| 38 | 
         
             
                }
         
     | 
| 39 | 
         | 
| 40 | 
         
            +
                def record(self, critical, parser):
         
     | 
| 41 | 
         
            +
                    if self.skill_level not in self.bind_skills:
         
     | 
| 42 | 
         
             
                        return
         
     | 
| 43 | 
         
            +
                    self.bind_skill = self.bind_skills[self.skill_level]
         
     | 
| 44 | 
         
            +
                    super().record(critical, parser)
         
     | 
| 45 | 
         | 
| 46 | 
         | 
| 47 | 
         
             
            SKILLS: Dict[int, Skill | dict] = {
         
     | 
| 
         | 
|
| 83 | 
         
             
                    "skill_name": "兰摧玉折",
         
     | 
| 84 | 
         
             
                    "bind_skill": 711,
         
     | 
| 85 | 
         
             
                    "tick": 99,
         
     | 
| 86 | 
         
            +
                    "bind_buff_levels": {5: 2, 6: 1}
         
     | 
| 87 | 
         
             
                },
         
     | 
| 88 | 
         
             
                714: {
         
     | 
| 89 | 
         
             
                    "skill_class": MagicalDotDamage,
         
     | 
| 
         | 
|
| 108 | 
         
             
                    "skill_name": "钟林毓秀",
         
     | 
| 109 | 
         
             
                    "bind_skill": 714,
         
     | 
| 110 | 
         
             
                    "tick": 99,
         
     | 
| 111 | 
         
            +
                    "bind_buff_levels": {5: 2, 6: 1}
         
     | 
| 112 | 
         
             
                },
         
     | 
| 113 | 
         
             
                14941: {
         
     | 
| 114 | 
         
             
                    "skill_class": MagicalDamage,
         
     | 
| 115 | 
         
             
                    "skill_name": "阳明指",
         
     | 
| 116 | 
         
            +
                    "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,
         
     | 
| 117 | 
         
            +
                                    120, 125, 135, 145, 155],
         
     | 
| 118 | 
         
            +
                    "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,
         
     | 
| 119 | 
         
            +
                                    27, 28],
         
     | 
| 120 | 
         
             
                    "attack_power_cof": [48 * 1.365 * 1.2 * 1.05 * 1.1 * 1.15] * 9 +
         
     | 
| 121 | 
         
             
                                        [(48 + (i - 9) * 4) * 1.365 * 1.2 * 1.05 * 1.1 * 1.15 for i in range(10, 28)] +
         
     | 
| 122 | 
         
             
                                        [130 * 1.365 * 1.2 * 1.05 * 1.1 * 1.15],
         
     | 
| 
         | 
|
| 144 | 
         
             
                    "skill_name": "商阳指",
         
     | 
| 145 | 
         
             
                    "bind_skill": 666,
         
     | 
| 146 | 
         
             
                    "tick": 99,
         
     | 
| 147 | 
         
            +
                    "bind_buff_levels": {5: 2, 6: 1}
         
     | 
| 148 | 
         
             
                },
         
     | 
| 149 | 
         
             
                6693: {
         
     | 
| 150 | 
         
             
                    "skill_class": MagicalDamage,
         
     | 
| 
         | 
|
| 200 | 
         
             
                    "skill_name": "快雪时晴",
         
     | 
| 201 | 
         
             
                    "bind_skill": 24158,
         
     | 
| 202 | 
         
             
                    "tick": 99,
         
     | 
| 203 | 
         
            +
                    "bind_buff_levels": {2: 2, 3: 1}
         
     | 
| 204 | 
         
             
                },
         
     | 
| 205 | 
         
             
                601: {
         
     | 
| 206 | 
         
             
                    "skill_class": GeneraConsumeSkill,
         
     | 
    	
        schools/mo_wen/buffs.py
    CHANGED
    
    | 
         @@ -35,7 +35,7 @@ BUFFS = { 
     | 
|
| 35 | 
         
             
                        },
         
     | 
| 36 | 
         
             
                        **{
         
     | 
| 37 | 
         
             
                            skill_id: {
         
     | 
| 38 | 
         
            -
                                "attack_power_cof_gain":  
     | 
| 39 | 
         
             
                            } for skill_id in (9357, 9361)
         
     | 
| 40 | 
         
             
                        }
         
     | 
| 41 | 
         
             
                    }
         
     | 
| 
         | 
|
| 35 | 
         
             
                        },
         
     | 
| 36 | 
         
             
                        **{
         
     | 
| 37 | 
         
             
                            skill_id: {
         
     | 
| 38 | 
         
            +
                                "attack_power_cof_gain": 1.2
         
     | 
| 39 | 
         
             
                            } for skill_id in (9357, 9361)
         
     | 
| 40 | 
         
             
                        }
         
     | 
| 41 | 
         
             
                    }
         
     | 
    	
        schools/tai_xu_jian_yi/__init__.py
    CHANGED
    
    | 
         @@ -7,4 +7,4 @@ from schools.tai_xu_jian_yi.attribute import TaiXuJianYi 
     | 
|
| 7 | 
         | 
| 8 | 
         | 
| 9 | 
         
             
            def prepare(self, player_id):
         
     | 
| 10 | 
         
            -
                self. 
     | 
| 
         | 
|
| 7 | 
         | 
| 8 | 
         | 
| 9 | 
         
             
            def prepare(self, player_id):
         
     | 
| 10 | 
         
            +
                self.player_buffs[player_id][(9949, 1)] = 3
         
     | 
    	
        schools/yi_jin_jing/__init__.py
    CHANGED
    
    | 
         @@ -7,4 +7,4 @@ from schools.yi_jin_jing.attribute import YiJinJing 
     | 
|
| 7 | 
         | 
| 8 | 
         | 
| 9 | 
         
             
            def prepare(self, player_id):
         
     | 
| 10 | 
         
            -
                self. 
     | 
| 
         | 
|
| 7 | 
         | 
| 8 | 
         | 
| 9 | 
         
             
            def prepare(self, player_id):
         
     | 
| 10 | 
         
            +
                self.player_buffs[player_id][(10023, 1)] = 1
         
     | 
    	
        schools/yi_jin_jing/buffs.py
    CHANGED
    
    | 
         @@ -19,7 +19,7 @@ BUFFS = { 
     | 
|
| 19 | 
         
             
                    "max_stack": 3
         
     | 
| 20 | 
         
             
                },
         
     | 
| 21 | 
         
             
                19635: {
         
     | 
| 22 | 
         
            -
                    "buff_name": " 
     | 
| 23 | 
         
             
                    "gain_attributes": {
         
     | 
| 24 | 
         
             
                        "magical_vulnerable": [41, 82, 123]
         
     | 
| 25 | 
         
             
                    }
         
     | 
| 
         @@ -62,7 +62,7 @@ BUFFS = { 
     | 
|
| 62 | 
         
             
                    "gain_skills": {
         
     | 
| 63 | 
         
             
                        skill_id: {
         
     | 
| 64 | 
         
             
                            "skill_damage_addition": 205
         
     | 
| 65 | 
         
            -
                        } for skill_id in (3848, 3849, 3850, 3814, 3816, 13685 
     | 
| 66 | 
         
             
                    }
         
     | 
| 67 | 
         
             
                },
         
     | 
| 68 | 
         
             
                24453: {
         
     | 
| 
         @@ -76,7 +76,7 @@ BUFFS = { 
     | 
|
| 76 | 
         
             
                    "gain_skills": {
         
     | 
| 77 | 
         
             
                        skill_id: {
         
     | 
| 78 | 
         
             
                            "skill_pve_addition": 820
         
     | 
| 79 | 
         
            -
                        } for skill_id in (17641, 3848, 3849, 3850, 236, 3810, 271)
         
     | 
| 80 | 
         
             
                    }
         
     | 
| 81 | 
         
             
                },
         
     | 
| 82 | 
         
             
                1919: {
         
     | 
| 
         @@ -84,7 +84,7 @@ BUFFS = { 
     | 
|
| 84 | 
         
             
                    "gain_skills": {
         
     | 
| 85 | 
         
             
                        skill_id: {
         
     | 
| 86 | 
         
             
                            "skill_damage_addition": 922
         
     | 
| 87 | 
         
            -
                        } for skill_id in (3848, 3849, 3850)
         
     | 
| 88 | 
         
             
                    }
         
     | 
| 89 | 
         
             
                }
         
     | 
| 90 | 
         
             
            }
         
     | 
| 
         | 
|
| 19 | 
         
             
                    "max_stack": 3
         
     | 
| 20 | 
         
             
                },
         
     | 
| 21 | 
         
             
                19635: {
         
     | 
| 22 | 
         
            +
                    "buff_name": "普渡",
         
     | 
| 23 | 
         
             
                    "gain_attributes": {
         
     | 
| 24 | 
         
             
                        "magical_vulnerable": [41, 82, 123]
         
     | 
| 25 | 
         
             
                    }
         
     | 
| 
         | 
|
| 62 | 
         
             
                    "gain_skills": {
         
     | 
| 63 | 
         
             
                        skill_id: {
         
     | 
| 64 | 
         
             
                            "skill_damage_addition": 205
         
     | 
| 65 | 
         
            +
                        } for skill_id in (3848, 3849, 3850, 3814, 3816, 13685)
         
     | 
| 66 | 
         
             
                    }
         
     | 
| 67 | 
         
             
                },
         
     | 
| 68 | 
         
             
                24453: {
         
     | 
| 
         | 
|
| 76 | 
         
             
                    "gain_skills": {
         
     | 
| 77 | 
         
             
                        skill_id: {
         
     | 
| 78 | 
         
             
                            "skill_pve_addition": 820
         
     | 
| 79 | 
         
            +
                        } for skill_id in (17641, 3848, 3849, 3850, 236, 3810, 271, 743)
         
     | 
| 80 | 
         
             
                    }
         
     | 
| 81 | 
         
             
                },
         
     | 
| 82 | 
         
             
                1919: {
         
     | 
| 
         | 
|
| 84 | 
         
             
                    "gain_skills": {
         
     | 
| 85 | 
         
             
                        skill_id: {
         
     | 
| 86 | 
         
             
                            "skill_damage_addition": 922
         
     | 
| 87 | 
         
            +
                        } for skill_id in (3848, 3849, 3850, 271)
         
     | 
| 88 | 
         
             
                    }
         
     | 
| 89 | 
         
             
                }
         
     | 
| 90 | 
         
             
            }
         
     | 
    	
        schools/yi_jin_jing/recipes.py
    CHANGED
    
    | 
         @@ -16,9 +16,9 @@ RECIPE_GAINS: Dict[str, Dict[str, Gain]] = { 
     | 
|
| 16 | 
         
             
                    "5%伤害": damage_addition_recipe([3848, 3849, 3850, 271], 51),
         
     | 
| 17 | 
         
             
                    "4%伤害": damage_addition_recipe([3848, 3849, 3850, 271], 41),
         
     | 
| 18 | 
         
             
                    "3%伤害": damage_addition_recipe([3848, 3849, 3850, 271], 31),
         
     | 
| 19 | 
         
            -
                    "4%会心": critical_strike_recipe([3848, 3849, 3850 
     | 
| 20 | 
         
            -
                    "3%会心": critical_strike_recipe([3848, 3849, 3850 
     | 
| 21 | 
         
            -
                    "2%会心": critical_strike_recipe([3848, 3849, 3850 
     | 
| 22 | 
         
             
                },
         
     | 
| 23 | 
         
             
                "捕风式": {
         
     | 
| 24 | 
         
             
                    "15%伤害": damage_addition_recipe([14951], 150),
         
     | 
| 
         | 
|
| 16 | 
         
             
                    "5%伤害": damage_addition_recipe([3848, 3849, 3850, 271], 51),
         
     | 
| 17 | 
         
             
                    "4%伤害": damage_addition_recipe([3848, 3849, 3850, 271], 41),
         
     | 
| 18 | 
         
             
                    "3%伤害": damage_addition_recipe([3848, 3849, 3850, 271], 31),
         
     | 
| 19 | 
         
            +
                    "4%会心": critical_strike_recipe([3848, 3849, 3850], 400),
         
     | 
| 20 | 
         
            +
                    "3%会心": critical_strike_recipe([3848, 3849, 3850], 300),
         
     | 
| 21 | 
         
            +
                    "2%会心": critical_strike_recipe([3848, 3849, 3850], 200),
         
     | 
| 22 | 
         
             
                },
         
     | 
| 23 | 
         
             
                "捕风式": {
         
     | 
| 24 | 
         
             
                    "15%伤害": damage_addition_recipe([14951], 150),
         
     | 
    	
        schools/yi_jin_jing/skills.py
    CHANGED
    
    | 
         @@ -7,18 +7,19 @@ from general.skills import GENERAL_SKILLS 
     | 
|
| 7 | 
         
             
            class 明法判定(Skill):
         
     | 
| 8 | 
         
             
                final_buff = 19635
         
     | 
| 9 | 
         | 
| 10 | 
         
            -
                def record(self,  
     | 
| 11 | 
         
            -
                    buff_level = parser. 
     | 
| 12 | 
         
             
                    if buff_level:
         
     | 
| 13 | 
         
            -
                        parser. 
     | 
| 14 | 
         | 
| 15 | 
         | 
| 16 | 
         
             
            class 明法移除(Skill):
         
     | 
| 17 | 
         
             
                final_buff = 19635
         
     | 
| 18 | 
         | 
| 19 | 
         
            -
                def record(self,  
     | 
| 20 | 
         
            -
                     
     | 
| 21 | 
         
            -
             
     | 
| 
         | 
|
| 22 | 
         | 
| 23 | 
         | 
| 24 | 
         
             
            SKILLS: Dict[int, Skill | dict] = {
         
     | 
| 
         @@ -47,13 +48,6 @@ SKILLS: Dict[int, Skill | dict] = { 
     | 
|
| 47 | 
         
             
                    "skill_name": "明法移除",
         
     | 
| 48 | 
         
             
                    "bind_buff": 890,
         
     | 
| 49 | 
         
             
                },
         
     | 
| 50 | 
         
            -
                743: {
         
     | 
| 51 | 
         
            -
                    "skill_class": MagicalDotDamage,
         
     | 
| 52 | 
         
            -
                    "skill_name": "横扫六合(DOT)",
         
     | 
| 53 | 
         
            -
                    "damage_base": 45,
         
     | 
| 54 | 
         
            -
                    "attack_power_cof": 70 * 1.2 * 1.65 * 1.15 * 1.15 * 1.05 * 1.25 * 1.1 * 1.1,
         
     | 
| 55 | 
         
            -
                    "interval": 32
         
     | 
| 56 | 
         
            -
                },
         
     | 
| 57 | 
         
             
                19090: {
         
     | 
| 58 | 
         
             
                    "skill_class": PhysicalDamage,
         
     | 
| 59 | 
         
             
                    "skill_name": ["普渡四方", "韦陀献杵", "横扫六合", "摩诃无量"],
         
     | 
| 
         @@ -80,6 +74,13 @@ SKILLS: Dict[int, Skill | dict] = { 
     | 
|
| 80 | 
         
             
                    "damage_rand": 2,
         
     | 
| 81 | 
         
             
                    "attack_power_cof": 16,
         
     | 
| 82 | 
         
             
                },
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 83 | 
         
             
                3810: {
         
     | 
| 84 | 
         
             
                    "skill_class": type("Mixing", (MagicalDamage, DotSkill), {}),
         
     | 
| 85 | 
         
             
                    "skill_name": "横扫六合",
         
     | 
| 
         @@ -144,7 +145,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 * 5) * 1.15 * 0.95 * 1.05 * 1.2 * 1.1 for i in range( 
     | 
| 148 | 
         
             
                                        [200 * 1.2 * 1.15 * 0.95 * 1.05 * 1.2 * 1.1],
         
     | 
| 149 | 
         
             
                },
         
     | 
| 150 | 
         
             
                3816: {
         
     | 
| 
         @@ -152,7 +153,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 * 5) * 1.15 * 0.95 * 1.05 * 1.1 for i in range( 
     | 
| 156 | 
         
             
                                        [200 * 1.2 * 1.15 * 0.95 * 1.05 * 1.1],
         
     | 
| 157 | 
         
             
                },
         
     | 
| 158 | 
         
             
                13685: {
         
     | 
| 
         | 
|
| 7 | 
         
             
            class 明法判定(Skill):
         
     | 
| 8 | 
         
             
                final_buff = 19635
         
     | 
| 9 | 
         | 
| 10 | 
         
            +
                def record(self, critical, parser):
         
     | 
| 11 | 
         
            +
                    buff_level = parser.current_target_buffs.get((self.bind_buff, 1))
         
     | 
| 12 | 
         
             
                    if buff_level:
         
     | 
| 13 | 
         
            +
                        parser.current_target_buffs[(self.final_buff, buff_level)] = 1
         
     | 
| 14 | 
         | 
| 15 | 
         | 
| 16 | 
         
             
            class 明法移除(Skill):
         
     | 
| 17 | 
         
             
                final_buff = 19635
         
     | 
| 18 | 
         | 
| 19 | 
         
            +
                def record(self, critical, parser):
         
     | 
| 20 | 
         
            +
                    buff_level = parser.current_target_buffs.get((self.bind_buff, 1), 0)
         
     | 
| 21 | 
         
            +
                    for level in range(buff_level):
         
     | 
| 22 | 
         
            +
                        parser.current_target_buffs.pop((self.final_buff, level + 1), None)
         
     | 
| 23 | 
         | 
| 24 | 
         | 
| 25 | 
         
             
            SKILLS: Dict[int, Skill | dict] = {
         
     | 
| 
         | 
|
| 48 | 
         
             
                    "skill_name": "明法移除",
         
     | 
| 49 | 
         
             
                    "bind_buff": 890,
         
     | 
| 50 | 
         
             
                },
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 51 | 
         
             
                19090: {
         
     | 
| 52 | 
         
             
                    "skill_class": PhysicalDamage,
         
     | 
| 53 | 
         
             
                    "skill_name": ["普渡四方", "韦陀献杵", "横扫六合", "摩诃无量"],
         
     | 
| 
         | 
|
| 74 | 
         
             
                    "damage_rand": 2,
         
     | 
| 75 | 
         
             
                    "attack_power_cof": 16,
         
     | 
| 76 | 
         
             
                },
         
     | 
| 77 | 
         
            +
                743: {
         
     | 
| 78 | 
         
            +
                    "skill_class": MagicalDotDamage,
         
     | 
| 79 | 
         
            +
                    "skill_name": "横扫六合(DOT)",
         
     | 
| 80 | 
         
            +
                    "damage_base": 45,
         
     | 
| 81 | 
         
            +
                    "attack_power_cof": 70 * 1.2 * 1.65 * 1.15 * 1.15 * 1.05 * 1.25 * 1.1 * 1.1,
         
     | 
| 82 | 
         
            +
                    "interval": 32
         
     | 
| 83 | 
         
            +
                },
         
     | 
| 84 | 
         
             
                3810: {
         
     | 
| 85 | 
         
             
                    "skill_class": type("Mixing", (MagicalDamage, DotSkill), {}),
         
     | 
| 86 | 
         
             
                    "skill_name": "横扫六合",
         
     | 
| 
         | 
|
| 145 | 
         
             
                    "skill_name": "守缺式",
         
     | 
| 146 | 
         
             
                    "damage_base": [52, 62, 72, 82, 92, 102, 112, 122, 132, 142],
         
     | 
| 147 | 
         
             
                    "damage_rand": 5,
         
     | 
| 148 | 
         
            +
                    "attack_power_cof": [(120 + i * 5) * 1.15 * 0.95 * 1.05 * 1.2 * 1.1 for i in range(9)] +
         
     | 
| 149 | 
         
             
                                        [200 * 1.2 * 1.15 * 0.95 * 1.05 * 1.2 * 1.1],
         
     | 
| 150 | 
         
             
                },
         
     | 
| 151 | 
         
             
                3816: {
         
     | 
| 
         | 
|
| 153 | 
         
             
                    "skill_name": "守缺式",
         
     | 
| 154 | 
         
             
                    "damage_base": [52, 62, 72, 82, 92, 102, 112, 122, 132, 142],
         
     | 
| 155 | 
         
             
                    "damage_rand": 5,
         
     | 
| 156 | 
         
            +
                    "attack_power_cof": [(120 + i * 5) * 1.15 * 0.95 * 1.05 * 1.1 for i in range(9)] +
         
     | 
| 157 | 
         
             
                                        [200 * 1.2 * 1.15 * 0.95 * 1.05 * 1.1],
         
     | 
| 158 | 
         
             
                },
         
     | 
| 159 | 
         
             
                13685: {
         
     | 
    	
        utils/analyzer.py
    CHANGED
    
    | 
         @@ -39,27 +39,36 @@ def filter_status(status, school: School, skill_id): 
     | 
|
| 39 | 
         
             
                    buff.buff_level, buff.buff_stack = buff_level, buff_stack
         
     | 
| 40 | 
         
             
                    if buff.gain_attributes:
         
     | 
| 41 | 
         
             
                        buffs.append(buff)
         
     | 
| 42 | 
         
            -
                     
     | 
| 43 | 
         
             
                        buffs.append(buff)
         
     | 
| 44 | 
         | 
| 45 | 
         
             
                return tuple(sorted(buffs, key=lambda x: x.buff_id))
         
     | 
| 46 | 
         | 
| 47 | 
         | 
| 48 | 
         
            -
            def add_buffs(current_buffs, snapshot_buffs, attribute: Attribute, skill: Skill):
         
     | 
| 
         | 
|
| 49 | 
         
             
                if not snapshot_buffs:
         
     | 
| 50 | 
         
             
                    for buff in current_buffs:
         
     | 
| 51 | 
         
             
                        buff.add_all(attribute, skill)
         
     | 
| 
         | 
|
| 52 | 
         
             
                elif isinstance(skill, DotDamage):
         
     | 
| 53 | 
         
             
                    for buff in snapshot_buffs:
         
     | 
| 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 | 
         
            -
             
     | 
| 
         | 
|
| 63 | 
         
             
                if not snapshot_buffs:
         
     | 
| 64 | 
         
             
                    for buff in current_buffs:
         
     | 
| 65 | 
         
             
                        buff.sub_all(attribute, skill)
         
     | 
| 
         @@ -71,12 +80,12 @@ def sub_buffs(current_buffs, snapshot_buffs, attribute: Attribute, skill: Skill) 
     | 
|
| 71 | 
         
             
                elif isinstance(skill, PetDamage):
         
     | 
| 72 | 
         
             
                    for buff in snapshot_buffs:
         
     | 
| 73 | 
         
             
                        buff.sub_all(attribute, skill)
         
     | 
| 
         | 
|
| 
         | 
|
| 74 | 
         | 
| 75 | 
         | 
| 76 | 
         
            -
            def concat_buffs( 
     | 
| 77 | 
         
            -
                buffs = ",".join(buff.display_name for buff in  
     | 
| 78 | 
         
            -
                if snapshot_buffs and current_buffs != snapshot_buffs:
         
     | 
| 79 | 
         
            -
                    buffs += f"({','.join(buff.display_name for buff in snapshot_buffs)})"
         
     | 
| 80 | 
         
             
                if not buffs:
         
     | 
| 81 | 
         
             
                    buffs = "~"
         
     | 
| 82 | 
         
             
                return buffs
         
     | 
| 
         @@ -100,20 +109,20 @@ def analyze_details(record, duration: int, attribute: Attribute, school: School) 
     | 
|
| 100 | 
         
             
                    if not (skill_summary := summary.get(skill_name)):
         
     | 
| 101 | 
         
             
                        skill_summary = summary[skill_name] = Detail()
         
     | 
| 102 | 
         
             
                    skill_total = skill_detail[""] = Detail()
         
     | 
| 103 | 
         
            -
                    for (current_status, snapshot_status), timeline in status.items():
         
     | 
| 104 | 
         
             
                        if not (timeline := [t for t in timeline if t[0] < duration]):
         
     | 
| 105 | 
         
             
                            continue
         
     | 
| 106 | 
         
             
                        critical_timeline = [t for t in timeline if t[1]]
         
     | 
| 107 | 
         | 
| 108 | 
         
             
                        current_buffs = filter_status(current_status, school, skill_id)
         
     | 
| 109 | 
         
             
                        snapshot_buffs = filter_status(snapshot_status, school, skill_id)
         
     | 
| 110 | 
         
            -
                         
     | 
| 111 | 
         | 
| 112 | 
         
            -
                         
     | 
| 113 | 
         
            -
             
     | 
| 114 | 
         
            -
             
     | 
| 115 | 
         
            -
             
     | 
| 116 | 
         
            -
             
     | 
| 117 | 
         | 
| 118 | 
         
             
                        detail.critical_count += len(critical_timeline)
         
     | 
| 119 | 
         
             
                        detail.count += len(timeline)
         
     | 
| 
         | 
|
| 39 | 
         
             
                    buff.buff_level, buff.buff_stack = buff_level, buff_stack
         
     | 
| 40 | 
         
             
                    if buff.gain_attributes:
         
     | 
| 41 | 
         
             
                        buffs.append(buff)
         
     | 
| 42 | 
         
            +
                    elif skill_id in buff.gain_skills:
         
     | 
| 43 | 
         
             
                        buffs.append(buff)
         
     | 
| 44 | 
         | 
| 45 | 
         
             
                return tuple(sorted(buffs, key=lambda x: x.buff_id))
         
     | 
| 46 | 
         | 
| 47 | 
         | 
| 48 | 
         
            +
            def add_buffs(current_buffs, snapshot_buffs, target_buffs, attribute: Attribute, skill: Skill):
         
     | 
| 49 | 
         
            +
                final_buffs = []
         
     | 
| 50 | 
         
             
                if not snapshot_buffs:
         
     | 
| 51 | 
         
             
                    for buff in current_buffs:
         
     | 
| 52 | 
         
             
                        buff.add_all(attribute, skill)
         
     | 
| 53 | 
         
            +
                        final_buffs.append(buff)
         
     | 
| 54 | 
         
             
                elif isinstance(skill, DotDamage):
         
     | 
| 55 | 
         
             
                    for buff in snapshot_buffs:
         
     | 
| 56 | 
         
            +
                        if buff.add_dot(attribute, skill, True):
         
     | 
| 57 | 
         
            +
                            final_buffs.append(buff)
         
     | 
| 58 | 
         
             
                    for buff in current_buffs:
         
     | 
| 59 | 
         
            +
                        if buff.add_dot(attribute, skill, False):
         
     | 
| 60 | 
         
            +
                            final_buffs.append(buff)
         
     | 
| 61 | 
         
             
                elif isinstance(skill, PetDamage):
         
     | 
| 62 | 
         
             
                    for buff in snapshot_buffs:
         
     | 
| 63 | 
         
             
                        buff.add_all(attribute, skill)
         
     | 
| 64 | 
         
            +
                        final_buffs.append(buff)
         
     | 
| 65 | 
         
            +
                for buff in target_buffs:
         
     | 
| 66 | 
         
            +
                    buff.add_all(attribute, skill)
         
     | 
| 67 | 
         | 
| 68 | 
         
            +
                return final_buffs + list(target_buffs)
         
     | 
| 69 | 
         | 
| 70 | 
         
            +
             
     | 
| 71 | 
         
            +
            def sub_buffs(current_buffs, snapshot_buffs, target_buffs, attribute: Attribute, skill: Skill):
         
     | 
| 72 | 
         
             
                if not snapshot_buffs:
         
     | 
| 73 | 
         
             
                    for buff in current_buffs:
         
     | 
| 74 | 
         
             
                        buff.sub_all(attribute, skill)
         
     | 
| 
         | 
|
| 80 | 
         
             
                elif isinstance(skill, PetDamage):
         
     | 
| 81 | 
         
             
                    for buff in snapshot_buffs:
         
     | 
| 82 | 
         
             
                        buff.sub_all(attribute, skill)
         
     | 
| 83 | 
         
            +
                for buff in target_buffs:
         
     | 
| 84 | 
         
            +
                    buff.sub_all(attribute, skill)
         
     | 
| 85 | 
         | 
| 86 | 
         | 
| 87 | 
         
            +
            def concat_buffs(buffs):
         
     | 
| 88 | 
         
            +
                buffs = ",".join(buff.display_name for buff in buffs)
         
     | 
| 
         | 
|
| 
         | 
|
| 89 | 
         
             
                if not buffs:
         
     | 
| 90 | 
         
             
                    buffs = "~"
         
     | 
| 91 | 
         
             
                return buffs
         
     | 
| 
         | 
|
| 109 | 
         
             
                    if not (skill_summary := summary.get(skill_name)):
         
     | 
| 110 | 
         
             
                        skill_summary = summary[skill_name] = Detail()
         
     | 
| 111 | 
         
             
                    skill_total = skill_detail[""] = Detail()
         
     | 
| 112 | 
         
            +
                    for (current_status, snapshot_status, target_status), timeline in status.items():
         
     | 
| 113 | 
         
             
                        if not (timeline := [t for t in timeline if t[0] < duration]):
         
     | 
| 114 | 
         
             
                            continue
         
     | 
| 115 | 
         
             
                        critical_timeline = [t for t in timeline if t[1]]
         
     | 
| 116 | 
         | 
| 117 | 
         
             
                        current_buffs = filter_status(current_status, school, skill_id)
         
     | 
| 118 | 
         
             
                        snapshot_buffs = filter_status(snapshot_status, school, skill_id)
         
     | 
| 119 | 
         
            +
                        target_buffs = filter_status(target_status, school, skill_id)
         
     | 
| 120 | 
         | 
| 121 | 
         
            +
                        buffs = add_buffs(current_buffs, snapshot_buffs, target_buffs, attribute, skill)
         
     | 
| 122 | 
         
            +
                        buffs = concat_buffs(buffs)
         
     | 
| 123 | 
         
            +
                        detail = skill_detail[buffs] = Detail(*skill(attribute))
         
     | 
| 124 | 
         
            +
                        detail.gradients = analyze_gradients(skill, attribute)
         
     | 
| 125 | 
         
            +
                        sub_buffs(current_buffs, snapshot_buffs, target_buffs, attribute, skill)
         
     | 
| 126 | 
         | 
| 127 | 
         
             
                        detail.critical_count += len(critical_timeline)
         
     | 
| 128 | 
         
             
                        detail.count += len(timeline)
         
     | 
    	
        utils/io.py
    ADDED
    
    | 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from collections import defaultdict
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            from base.constant import FRAME_PER_SECOND
         
     | 
| 4 | 
         
            +
             
     | 
| 5 | 
         
            +
            DELIMITER = "-"
         
     | 
| 6 | 
         
            +
            COMMA = ","
         
     | 
| 7 | 
         
            +
            SEMICOLON = ";"
         
     | 
| 8 | 
         
            +
             
     | 
| 9 | 
         
            +
             
     | 
| 10 | 
         
            +
            def serialize(record, duration):
         
     | 
| 11 | 
         
            +
                duration *= FRAME_PER_SECOND
         
     | 
| 12 | 
         
            +
                result = defaultdict(lambda: defaultdict(list))
         
     | 
| 13 | 
         
            +
                for skill, status in record.items():
         
     | 
| 14 | 
         
            +
                    skill = DELIMITER.join(str(e) for e in skill)
         
     | 
| 15 | 
         
            +
                    for (current_status, snapshot_status, target_status), timeline in status.items():
         
     | 
| 16 | 
         
            +
                        if not (timeline := [t for t in timeline if t[0] < duration]):
         
     | 
| 17 | 
         
            +
                            continue
         
     | 
| 18 | 
         
            +
                        current_status = COMMA.join(DELIMITER.join(str(e) for e in buff) for buff in current_status)
         
     | 
| 19 | 
         
            +
                        snapshot_status = COMMA.join(DELIMITER.join(str(e) for e in buff) for buff in snapshot_status)
         
     | 
| 20 | 
         
            +
                        target_status = COMMA.join(DELIMITER.join(str(e) for e in buff) for buff in target_status)
         
     | 
| 21 | 
         
            +
                        concat_status = SEMICOLON.join((current_status, snapshot_status, target_status))
         
     | 
| 22 | 
         
            +
             
     | 
| 23 | 
         
            +
                        result[skill][concat_status].append(timeline)
         
     | 
| 24 | 
         
            +
             
     | 
| 25 | 
         
            +
                return result
         
     |