def populate_details(self, db, race_candidate): sql = (f"select race, subrace_of, maturity_age, avg_max_age, " f"base_walking_speed, height_min_inches, " f"height_modifier_multiplier, height_modifier_die, " f"height_modifier_adj, weight_min_pounds, " f"weight_modifier_multiplier, weight_modifier_die, " f'weight_modifier_adj, "size", source_material, ' f"source_credit_url, source_credit_comment " f"from dnd_5e.lu_race where " f"lower(race) = lower('{race_candidate}');") results = db.query(sql) self.race = results[0][0] if results[0][0] else None self.subrace_of = results[0][1] if results[0][1] else None self.maturity_age = results[0][2] if results[0][2] else None self.avg_max_age = results[0][3] if results[0][3] else None self.base_walking_speed = results[0][4] if results[0][4] else None self.height_min_inches = results[0][5] if results[0][5] else None self.height_modifier_multiplier = results[0][6] if results[0][6] \ else None self.height_modifier_die = results[0][7] if results[0][7] \ else None self.height_modifier_adj = results[0][8] if results[0][8] \ else None self.weight_min_pounds = results[0][9] if results[0][9] \ else None self.weight_modifier_multiplier = results[0][10] if results[0][10] \ else None self.weight_modifier_die = results[0][11] if results[0][11] \ else None self.weight_modifier_adj = results[0][12] if results[0][12] \ else None self.size = results[0][13] if results[0][13] \ else None self.source_material = results[0][14] if results[0][14] \ else None self.source_credit_url = results[0][15] if results[0][15] \ else None self.source_credit_comment = results[0][16] if results[0][16] \ else None lang_sql = (f"select language from dnd_5e.lu_racial_language " f"where lower(race) = lower('{self.race}') ") rasm_sql = (f"select ability, modifier from " f"dnd_5e.lu_racial_ability_score_modifier " f"where lower(race) = lower('{self.race}') ") if self.subrace_of: self.traitContainer = RacialTraits(db, self.race, self.subrace_of) lang_sql = (f"{lang_sql} or lower(race) = " f"lower('{self.subrace_of}') ") rasm_sql = (f"{rasm_sql} or lower(race) = " f"lower('{self.subrace_of}') ") else: self.traitContainer = RacialTraits(db, self.race) if self.use_rasm_ind: rasm = db.query(rasm_sql) for r in rasm: if r[0] == "Strength": self.ability_bonuses[0] = r[1] if r[0] == "Dexterity": self.ability_bonuses[1] = r[1] if r[0] == "Constitution": self.ability_bonuses[2] = r[1] if r[0] == "Intelligence": self.ability_bonuses[3] = r[1] if r[0] == "Wisdom": self.ability_bonuses[4] = r[1] if r[0] == "Charisma": self.ability_bonuses[5] = r[1] langs = db.query(lang_sql) for l in langs: self.languages.append(l[0]) dh = Die(ctx=self.ctx, sides=self.height_modifier_die) self.height = dh.get_sum(startingval=self.height_min_inches, multiplier=self.height_modifier_multiplier) dw = Die(ctx=self.ctx, sides=self.weight_modifier_die) self.weight = dw.get_sum(startingval=self.weight_min_pounds, multiplier=self.weight_modifier_multiplier)