from app.functions.roll_dices import roll_dices


def roll_ability_scores(chartype, attribute=None):
    if attribute is None or attribute == "all":
        ability_list = ['p-strength', 'm-strength', 'constitution', 'dexterity', 'charisma', 'intelligence']
    else:
        ability_list = [attribute]

    ability_scores = {}

    for abil in ability_list:
        if ((chartype == 'human') and
                ((abil == 'intelligence') or
                 (abil == 'charisma') or
                 (abil == 'constitution'))):
            roll = roll_dices(4, 6, False)  # humans are special
            if (abil == 'constitution') and roll["result"] > 18:
                roll["capped"] = True
                roll["result"] = 18
            if (abil == 'intelligence' or abil == 'charisma') and roll["result"] > 21:
                roll["capped"] = True
                roll["result"] = 21
            ability_scores[abil] = roll["result"]
        else:
            roll = roll_dices(4, 6, True)  # nothing else is special
            ability_scores[abil] = roll["result"]

    return ability_scores
