def unset_skill(self, skill): skills = convert(self.learned_skills) skillset = convert(self.skillset) skillset.pop(skillset.index(skill.skill_id)) self.skillset = str(skillset) self.save()
def set_skill(self, skill): skills = convert(self.learned_skills) skillset = convert(self.skillset) skillset.append(skill.skill_id) self.skillset = str(skillset) self.save()
def lv_up(self): """ Levels up a member, if possible. """ while self.messages >= self.next_lv and self.lv < config.MAXIMUM_LV: self.lv += 1 self.next_lv = next_lv(self.lv) self.max_hp += randint(10, 50) self.max_mp += randint(5, 25) self.strength += randint(0, 2) self.defense += randint(0, 2) self.magic += randint(0, 2) self.skill_points += 2 #pply maximum restrictions if self.max_hp > config.MAXIMUM_HP: self.max_hp = config.MAXIMUM_HP if self.max_mp > config.MAXIMUM_MP: self.max_mp = config.MAXIMUM_MP if self.strength > config.MAXIMUM_STATS: self.strength = config.MAXIMUM_STATS if self.magic > config.MAXIMUM_STATS: self.magic = config.MAXIMUM_STATS if self.defense > config.MAXIMUM_STATS: self.defense = config.MAXIMUM_STATS # 50% chance learning a skill on level up if choice([True, False]): skills_data = read_query( create_db_connection(), DBQueries.select_skill( condition('skill_rank', self.get_skill_rank()))) new_skill = choice([s[0] for s in skills_data]) skills = convert(self.learned_skills) # skip if member already knows this skill if new_skill not in skills: skills.append(new_skill) self.learned_skills = str(skills) self.save() return self
def reset(self): """ Resets a player to initial stats, keeping only the skill points earned before. """ # resets is a list of the last lv(s) player has reseted resets = convert(self.resets) resets.append(self.lv) # calculates the amount skill points to start total_sp = sum([lv * 2 for lv in resets]) self.skill_points = total_sp self.resets = str(resets) # resets stats and skills player = set_base_stats(self) return player
def get_resets(self): return len(convert(self.resets))
def get_skillset(self): """ Returns a <dict> of <Skill> this player setted for combat. """ skills = [Skill(i) for i in convert(self.skillset)] return {skill.name: skill for skill in skills}
def get_skills(self): """ Returns a <dict> of <Skill> this player has learned keyed by skill name. """ skills = [Skill(i) for i in convert(self.learned_skills)] return {skill.name: skill for skill in skills}