示例#1
0
def elf(race_name, similar_names=False):
    male_name = ""
    female_name = ""
    first_char = None
    race_tuple_list = utils.return_race_tuple_list(race_name)
    for tuple_var in race_tuple_list:
        if first_char != tuple_var[0][0]:
            first_char = tuple_var[0][0]
            if first_char == "T":
                male_name += ")"
                female_name += ")"
            male_name += " "
            female_name += " "
            if first_char == "L":
                male_name += "("
                female_name += "("
        if tuple_var[0] and not tuple_var[0][-1].isdigit():
            if tuple_var[0][-1] == "M":
                male_name += add_syllable(race_name, tuple_var)
            elif tuple_var[0][-1] == "F":
                female_name += add_syllable(race_name, tuple_var)
        else:
            if similar_names:  # gen similar names
                syllable = add_syllable(race_name, tuple_var)
                male_name += syllable
                female_name += syllable
            else:  # or different names
                male_name += add_syllable(race_name, tuple_var)
                female_name += add_syllable(race_name, tuple_var)
    return [race_name, male_name, female_name]
示例#2
0
def standard_single_name(race_name, similar_names=False):
    name = ""
    first_char = None
    race_tuple_list = utils.return_race_tuple_list(race_name)
    for tuple_var in race_tuple_list:

        name += add_syllable(race_name, tuple_var)
    return [race_name, name, name]
示例#3
0
def tavern(race_name, similar_names=False):
    name = "the"
    first_char = None
    race_tuple_list = utils.return_race_tuple_list(race_name)
    for tuple_var in race_tuple_list:
        name += " "
        name += add_syllable(race_name, tuple_var)
    return [race_name, name, name]
示例#4
0
def standard_nongendered(race_name, similar_names=False):
    name = ""
    first_char = None
    race_tuple_list = utils.return_race_tuple_list(race_name)
    for tuple_var in race_tuple_list:
        if first_char != tuple_var[0][0]:
            first_char = tuple_var[0][0]
            name += " "
        name += add_syllable(race_name, tuple_var)
    return [race_name, name, name]
示例#5
0
def orc(race_name, similar_names=False):
    leading_orc_L2_space = True
    trailing_orc_L2_space = False
    name = ""
    first_char = None
    race_tuple_list = utils.return_race_tuple_list(race_name)
    for tuple_var in race_tuple_list:
        add_next_syllable = decision(tuple_var[1])
        if first_char != tuple_var[0][0]:
            first_char = tuple_var[0][0]
            name += " "
        if leading_orc_L2_space and tuple_var[0] == "L2":
            if add_next_syllable:
                name += " "
                leading_orc_L2_space = False
                trailing_orc_L2_space = True
        if trailing_orc_L2_space and tuple_var[0] == "L3":
            name += " "
            trailing_orc_L2_space = False
        name += add_syllable(race_name,
                             tuple_var,
                             predetermined=add_next_syllable)
    return [race_name, name, name]
示例#6
0
def party(race_name, similar_names=False):
    race_tuple_list = utils.return_race_tuple_list(race_name)
    p1 = race_tuple_list[0]  # subject (possessive)
    p1_text = ""
    p1a = race_tuple_list[1]  # subject's-adj
    p1a_text = ""
    n1 = race_tuple_list[2]  # noun1
    n1_text = ""
    n1a = race_tuple_list[3]  # n1's-adj
    n1a_text = ""
    n2 = race_tuple_list[4]  # noun2
    n2_text = ""
    n2a = race_tuple_list[5]  # n2-adj
    n2a_text = ""
    c1 = race_tuple_list[6]  # collective term else plural
    c1_text = ""
    connector = ""

    tuple_list = [p1, p1a, n1, n1a, n2, n2a, c1]
    if decision(p1[1]):
        p1a_text = add_syllable(race_name, p1a, similar_names=similar_names)
        p1_text = add_syllable(
            race_name, p1, predetermined=True,
            similar_names=similar_names) + "'s"
    if decision(n1[1]):
        n1a_text = add_syllable(race_name, n1a, similar_names=similar_names)
        n1_text = add_syllable(race_name,
                               n1,
                               predetermined=True,
                               similar_names=similar_names)
    else:
        n1a_text = add_syllable(race_name,
                                n1a,
                                predetermined=True,
                                similar_names=similar_names)
    if decision(n2[1]):
        n2a_text = add_syllable(race_name, n2a, similar_names=similar_names)
        n2_text = add_syllable(race_name,
                               n2,
                               predetermined=True,
                               similar_names=similar_names)
    c1_text = add_syllable(race_name, c1, similar_names=similar_names)
    text_list = [
        p1a_text, p1_text, n1a_text, n1_text, connector, n2a_text, n2_text,
        c1_text
    ]
    if n2_text and not p1_text:
        if n1_text:
            n1_text += "'s"
    text_list = [
        p1a_text, p1_text, n1a_text, n1_text, connector, n2a_text, n2_text,
        c1_text
    ]
    passed_list = [x for x in text_list if x]
    if len(passed_list) > 5:
        connector = "and"
    new_plural = None
    text_list = [
        p1a_text, p1_text, n1a_text, n1_text, connector, n2a_text, n2_text,
        c1_text
    ]
    if not c1_text:
        for text in reversed(text_list):
            if text:
                new_plural = inflection.pluralize(text)
                break
    if new_plural:
        last_index = text_list.index(passed_list[-1])
        text_list[last_index] = new_plural
    name = "The "
    for word in text_list:
        if word:
            name += word + " "
    name = name.strip()
    if similar_names:
        race_name = "party_alliteration"
    return [race_name, name, name]
示例#7
0
def newtavern(race_name, similar_names=False):
    name = ""
    first_char = None
    race_tuple_list = utils.return_race_tuple_list(race_name)

    first_name_probability = 0.2
    s_vs_and_probability = 0.8
    first_name = None
    if decision(first_name_probability):
        human_race_name, human_male_name, human_female_name = gen_race_name(
            random.choice(config.human_races))
        if similar_names:
            for i in range(10000):
                human_male_name = human_male_name.strip()
                human_female_name = human_female_name.strip()
                if human_male_name.startswith(
                        similar_names) or human_female_name.startswith(
                            similar_names):
                    alliterative_name = random.choice([
                        name for name in [human_male_name, human_female_name]
                        if name.startswith(similar_names)
                    ])
                    human_male_name = alliterative_name
                    human_female_name = alliterative_name
                    break
                else:
                    human_race_name, human_male_name, human_female_name = gen_race_name(
                        random.choice(config.human_races))
        first_name = random.choice([human_male_name,
                                    human_female_name]).strip().split(" ")[0]

    name1s_likely = race_tuple_list[0]
    name1and_likely = race_tuple_list[1]
    n2 = race_tuple_list[2]
    n3 = race_tuple_list[3]

    if first_name:
        name += first_name + "'s"
        name += " "
        name += add_syllable(race_name, n2, similar_names=similar_names)
    elif decision(name1s_likely[1]):
        name += add_syllable(race_name,
                             name1s_likely,
                             predetermined=True,
                             similar_names=similar_names)
        if decision(s_vs_and_probability):
            name = "The " + name + "'s "
        else:
            name = "The " + name + " and "
        name += add_syllable(race_name, n2, similar_names=similar_names)
    elif decision(name1and_likely[1]):
        name += add_syllable(race_name,
                             name1and_likely,
                             predetermined=True,
                             similar_names=similar_names)
        if decision(s_vs_and_probability):
            name = "The " + name + " and "
        else:
            name = "The " + name + "'s "
        name += add_syllable(race_name, n2, similar_names=similar_names)

    else:
        name += add_syllable(race_name,
                             n2,
                             predetermined=True,
                             similar_names=similar_names)
        name = "The " + name

    name += " "
    name += add_syllable(race_name, n3, similar_names=similar_names)

    if similar_names:
        race_name = "newtavern_alliteration"
    return [race_name, name, name]