def _add_equip_attrs(self): from core.item import Equipment f = Formation(self.char_id) socket = f.find_socket_by_hero(self.id) if not socket: return # 先把装备数值加到人物上 equipments = [] for x in ['weapon', 'armor', 'jewelry']: equip_id = getattr(socket, x) if equip_id: equip = Equipment(self.char_id, equip_id) self.attack += equip.attack self.defense += equip.defense self.hp += equip.hp equipments.append(equip) # 然后加成人物的专属装备 additions = {} special_equipments = self.model_hero.special_equipments if special_equipments: for equip in equipments: _cls = equip.equip.cls if _cls not in special_equipments: continue _tp = equip.equip.tp additions[_tp] = additions.get(_tp, 0) + special_equipments[_cls] for _tp, _add_percent in additions.items(): if _tp == 1: # attack self.attack *= (1 + _add_percent / 100.0) elif _tp == 2: # defense self.defense *= (1 + _add_percent / 100.0) else: # hp self.hp *= (1 + _add_percent / 100.0) self.hp = int(self.hp) # 最后再把宝石加上 for equip in equipments: for k, v in equip.gem_attributes.iteritems(): value = getattr(self, k) setattr(self, k, value + v) # 马 if socket.horse: horse = Horse(self.char_id).mongo_horse.horses[str(socket.horse)] self.attack += horse.attack self.defense += horse.defense self.hp += horse.hp self.crit += int(HORSE[horse.oid].crit / 10)