def level_up(self, skill_level=None, slot_num=None, level=None, bond=None):
is_valid = lambda x, min_val, max_val: x is None or (type(x) in [int, np.int64] and x <= max_val and x >= min_val)
check = [is_valid(level, 1, self.max_level),
is_valid(bond, 0, self.max_bond),
is_valid(skill_level, 1, 8),
is_valid(slot_num, self.min_slot_num, self.max_slot_num)]
is_none = [x is None for x in [level, bond, slot_num, skill_level]]
if not all(check):
attr_name = np.array(['Level', 'Bond', 'Skill Level', 'Slot Number'])
print(self)
print('{0} must be integer within valid range!'.format(', '.join(attr_name[[not x for x in check]])))
raise
not_none = [not x for x in is_none]
new_attr = np.array([self.level, self.bond, self.slot_num, 0 if self.skill is None else self.skill.level], dtype=int)
new_attr[not_none] = np.array([level, bond, slot_num, 0 if skill_level is None else skill_level])[not_none]
self.level, self.bond, self.slot_num, skill_level = new_attr
if self.skill is not None and skill_level in list(range(1,9)):
self.skill.set_level(skill_level)
self.smile, self.pure, self.cool, self.hp = [self.stats_list[self.level-1][i] for i in [0,1,2,5]]
评论列表
文章目录