コード例 #1
0
    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)